1

我正在尝试使用 ASP MVC3 操作链接导航到另一个视图(相同的控制器)。该视图附加到使用复合键作为其主键的模型。下面是写在视图上的操作链接

@Html.ActionLink("Edit Agent", "AgentEdit", "BankListMasterController", 
                                                new { @agentId = int.Parse(item.AgentId), @id = item.ID})

但是,当它被呈现时,它呈现如下

http://localhost:2574/BankListMaster/AgentEdit?Length=24

这显然会引发错误:

The parameters dictionary contains a null entry for parameter 'agentId' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ViewResult AgentEdit(Int32, Int32)' in 'Monet.Controllers.BankListMasterController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter.
Parameter name: parameters

这是用于良好测量的控制器方法:

    public ViewResult AgentEdit(int agentId, int id)
    {
        string compare = agentId.ToString();

        BankListAgentId agent = (from c in db.BankListAgentId
                                 where c.ID == id &&
                                       c.AgentId.Equals(compare)
                                 select c).Single();

        return View("AgentEdit", agent);
    }
4

2 回答 2

3
@Html.ActionLink("Edit Agent", "AgentEdit", "BankListMasterController", 
                                                new { agentId = int.Parse(item.AgentId), id = item.ID}, null)

这应该够了吧

理由是:根据http://msdn.microsoft.com/en-us/library/system.web.mvc.html.linkextensions.actionlink(v=vs.108).aspx

你不会找到使用 (HtmlHelper, string, string, string, object) 的方法,但是 (HtmlHelper, string, string, string, object, object) 倒数第二个对象是路由值,最后一个是 html 属性。

于 2013-04-04T23:16:11.703 回答
0

根据您提供的参数,调用了错误的 ActionLink。

问题是它“试图序列化一个字符串对象”

这是对“链接中的'Length'参数”问题的规范答案: Why does Html.ActionLink render "?Length=4"

于 2013-04-04T23:20:58.273 回答