这是我的索引视图(Index.cshtml)的相关部分:
@foreach (var item in Model) {
<li>
@Html.ActionLink(item.name, "Index", "Filler", new { cap = item }, null)
</li>
}
如您所见,ActionLink与Filler Controller上的Index操作绑定在一起,并传入整个项目(模型)-“ item”的类型为“ capsule”。
现在,在我的Filler Controller上的Index操作中:
public ActionResult Index(capsule cap)
{
var fillers = db.fillers.ToList();
return View(fillers);
}
由实体框架自动生成的胶囊类是:
namespace CapWorx.Models
{
using System;
using System.Collections.Generic;
public partial class capsule
{
public capsule()
{
this.fillers = new HashSet<filler>();
}
public int pk { get; set; }
public string name { get; set; }
public virtual ICollection<filler> fillers { get; set; }
}
}
问题是上述Index操作中的“ cap”为NULL。但是,如果我将类型更改为“ object”而不是“ capsule”,则确实会得到一些奇怪的非空数据,但无法将对象转换为“ capsule”。有人知道为什么这是NULL吗?
谢谢,
麦克风
最佳答案
通常,您只需将id
传递给操作。例如,您是否可以重构代码,以便它可以包含capsuleId
,从db获取胶囊并进行所需的任何处理。将整个对象添加到ActionLink
中的路由值没有任何意义。查看正在生成的链接。它可能只是...?cap=Namespace.Capsule
之类的东西,因为该对象将被ToString
关于c# - 如何将整个模型从索引 View 传递到完全不同的 Controller ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14297815/