2013-04-10 42 views
3

當我申請BindAttribute.Prefix到操作參數value,我希望DefaultModelBinder要麼使用定製前綴或回落至empty prefix(在這兩種情況下value參數將被分配的號碼100)。但相反,它沒有,因此下面的代碼會引發異常:如何將BindAttribute.Prefix應用於Int32類型的操作方法參數?

參數字典包含一個null條目,用於方法System.Web.Mvc的非空類型'System.Int32'的參數'value'的值.ActionResult指數(Int32)已」

[HttpPost] 
public ActionResult Index([Bind(Prefix = "originalPrefix")]int value) 
{ 
    return View(); 
} 

public ActionResult Index() 
{ 
    return View(); 
} 

Index.cshtml:

using (Html.BeginForm()) 
{  
     <input id="originalPrefix.value" name="originalPrefix.value" type="text" value="100" /> 
     <input id="value" name="value" type="text" value="100" /> 

     <input type="submit" value="submit" /> 
} 

一)爲什麼不DefaultModelBinder能結合表單數據value參數?

b)如果可能,我們如何將BindAttribute.Prefix應用於Int32類型的操作方法參數?

謝謝

+0

相關:[如何更改動作參數,並使其在不改變路由的情況下在asp.net mvc中工作?](http://stackoverflow.com/q/4749499/11683) – GSerg 2016-11-01 17:53:27

回答

2

name屬性的值應該是"originalPrefix""originalPrefix.value"。你試圖綁定參數而不是參數的值屬性。

+0

它現在有效,但由於在此情況前綴不是真正用作前綴,而是作爲表單數據元素的名稱,是否有將BindAttribute.Prefix應用於簡單類型參數(例如int)的任何情況證明是有用的? – user702769 2013-04-10 20:08:03

+2

據我所知,適用於簡單的參數_is_是其預期用途之一。語法看起來很奇怪。 – hwiechers 2013-04-11 04:42:16

+0

謝謝你的幫助 – user702769 2013-04-11 17:14:54

相關問題