这是我的索引视图(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/

10-10 14:46