2011-01-11 145 views
0

模型结合只是不工作,我 - 我总是NULL通过控制器来了!任何想法的人?modelbinding在ASP.NET MVC剃刀引擎故障

罗布

这是我行动的签名:

public ActionResult SearchForUser(SearchForUserModel m) 

这里是我的剃须刀头模型声明:

@model WebOne.Models.StatusIndexModel

StatusIndexModel是一个包含SearchForUserModel的组合模型:

public class SearchForUserModel 
{ 
    [Required(ErrorMessage = "Search information required")] 
    [DisplayName("Contact Search")] 
    public string Search { get; set; } 
} 

这里是我的剃刀:

@using (Html.BeginForm("SearchForUser", "Status")) 
    { 
    <div> 
      <div class="editor-field"> 
       @Html.TextBoxFor(m => m.searchForUserModel.Search) 
       <input type="submit" class="formbutton_small" value="Find" /> 
       <br /> 
       @Html.ValidationMessageFor(m => m.searchForUserModel.Search) 
      </div> 
    </div> 
    } 

这里是生成的HTML:

<form action="/Status/SearchForUser" method="post">   
    <div> 
     <div class="editor-field"> 
      <input data-val="true" data-val-required="Search information required" id="searchForUserModel_Search" name="searchForUserModel.Search" type="text" value="" /> 
      <input type="submit" class="formbutton_small" value="Find" /> 
      <br /> 
      <span class="field-validation-valid" data-valmsg-for="searchForUserModel.Search" data-valmsg-replace="true"></span> 
     </div> 
    </div> 
</form> 

回答

0

你需要指定前缀:

public ActionResult SearchForUser(
    [Bind(Prefix="searchForUserModel")]SearchForUserModel m 
) 
+0

唉唉 - 是因为我正在创建一个变量而不使用类定义?这是没有必要以纯老asp.net-MVC ... - 但你说得对,谢谢您!我需要再等8分钟才能接受你的答案,因为你太快了! – 2011-01-11 07:27:56