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) には、最後の 2 番目のオブジェクトがルート値で、最後のオブジェクトが html 属性です。

于 2013-04-04T23:16:11.703 に答える
0

指定したパラメーターに基づいて、間違った ActionLink が呼び出されています。

問題は、「文字列オブジェクトをシリアライズしようとしている」ことです

「リンクの「長さ」パラメーター」の質問に対する標準的な回答は次の とおりです。Html.ActionLinkが「?Length = 4」をレンダリングするのはなぜですか

于 2013-04-04T23:20:58.273 に答える