1
我有一個通用的「索引」頁面,其中列出了給定表的所有條目,並且有一個允許過濾網格中的數據的邊欄。我的模型如下:ASP.NET MVC:參數綁定到單個嵌套屬性
public class GenericFormIndexModel
{
public IEnumerable<IGenericForm> Entries { get; set; }
public FormSearchQueryModel Query { get; set; }
}
在剃刀文件我有一個這樣的HTML:
@using (Html.BeginForm("Search", controllerName, FormMethod.Post, new { id = "fSearch" }))
{
@Html.HiddenFor(m => m.Query.PageIndex)
@Html.HiddenFor(m => m.Query.PageSize)
@Html.HiddenFor(m => m.Query.SortBy)
...etc
@Html.TextBoxFor(m => m.Query.SerialNumber, null, new { @class = "inputbox right-search-field" })
...etc
,我已經定義如下動作:
[HttpPost]
public virtual ActionResult Search(FormSearchQueryModel queryModel)
{
//Implementation ommited
}
現在,問題在於表單中的值確實已經提交,但不綁定到我的「queryModel」參數中。我可以在Request.Form [「Query.Something」]中看到它們。
我不希望提交整個模型,因爲它沒有必要發佈所有條目和其他任何回。是否有可能獲得MVC綁定到一個嵌套屬性或我堅持使用Reqest.Form [「」]?
謝謝,但沒有幫助 – Matt
你說問題是值不綁定到模型,這是因爲生成的元素名稱就像「Query.Something」,...默認情況下,模型綁定器檢查元素名稱與屬性名稱相同,並且由於在您的情況下它們以Query作爲前綴,所以必須在「綁定」中指定該名稱。如果不檢查視圖源並查看元素的名稱並相應地指定。 – VJAI
我沒有說這是原因..我只提到他們確實被送回服務器,我知道這是因爲值在Request.Form對象中,名稱具有前綴「Query」。 「..我完全期望命名和它是正確的..我不明白爲什麼這些值不綁定到指定的參數類型。我只能看到兩種方法:使用Requst.Form或將整個父模型作爲參數傳遞..這可以工作,但正如我之前所說的......不需要將所有不必要的數據傳回 – Matt