我有2页。首先我只有表单发布数据进行搜索,第二我也有相同的搜索和容器与搜索结果的形式。当我从第一个表单发布 - 模型到搜索方法来了我所期望的,但从第二个表单模型属性设置为默认值(int - 0,布尔 - 假,字符串 - null等)发布模型始终是空的
什么是问题?
首先FOM:
<form class="form-horizontal" action="@Url.Action("Search", "Home")" method="POST">
@Html.ValidationSummary()
<fieldset>
<!-- Form Name -->
<legend>Search</legend>
<!-- Search input-->
<div class="form-group">
<label class="col-md-4 control-label" for="CertID">Certificate ID</label>
<div class="col-md-4">
<input id="CertID" name="CertID" type="search" placeholder="Certificate ID" class="form-control input-md" required="">
</div>
</div>
<!-- Search input-->
<div class="form-group">
<label class="col-md-4 control-label" for="CertAuthCode">Certificate AuthCode</label>
<div class="col-md-4">
<input id="CertAuthCode" name="CertAuthCode" type="search" placeholder="Certificate AuthCode" class="form-control input-md" required="">
</div>
</div>
<div class="form-group">
<div class="col-md-offset-4 col-md-4">
<div class="checkbox">
<label>
<input type="checkbox" name="IncludePreviousQuestionnaire" value="true"> Include Previous Questionnaire?
</label>
</div>
</div>
</div>
<!-- Button -->
<div class="form-group">
<label class="col-md-4 control-label" for="searchCert"></label>
<div class="col-md-4">
<button id="searchCert" type="submit" class="btn btn-primary">Search</button>
</div>
</div>
</fieldset>
第二形态:进行搜索请求
<form class="form-horizontal" action="@Url.Action("Search", "Home")" method="POST">
@Html.ValidationSummary()
<fieldset>
<!-- Form Name -->
<legend>Search</legend>
<!-- Search input-->
<div class="form-group">
@Html.LabelFor(m => m.SearchCertRequest.CertID, new { @class = "col-md-4 control-label" })
@*<label class="col-md-4 control-label" for="CertID">Certificate ID</label>*@
<div class="col-md-4">
@Html.TextBoxFor(m => m.SearchCertRequest.CertID, new { @placeholder = "Certificate ID", @class = "form-control input-md", @required="required" })
@*<input id="CertID" name="SearchCertRequest.CertID" type="search" placeholder="Certificate ID" class="form-control input-md" required="">*@
@Html.ValidationMessageFor(m => m.SearchCertRequest.CertID)
</div>
</div>
<!-- Search input-->
<div class="form-group">
@Html.LabelFor(m => m.SearchCertRequest.CertAuthCode, new { @class = "col-md-4 control-label" })
@*<label class="col-md-4 control-label" for="CertAuthCode">Certificate AuthCode</label>*@
<div class="col-md-4">
@Html.TextBoxFor(m => m.SearchCertRequest.CertAuthCode, new { @placeholder = "Certificate AuthCode", @class = "form-control input-md", @required = "required" })
@*<input id="CertAuthCode" name="SearchCertRequest.CertAuthCode" type="search" placeholder="Certificate AuthCode" class="form-control input-md" required="">*@
@Html.ValidationMessageFor(m => m.SearchCertRequest.CertAuthCode)
</div>
</div>
<div class="form-group">
<div class="col-md-offset-4 col-md-4">
<div class="checkbox">
<label>
@Html.CheckBoxFor(m=>m.SearchCertRequest.IncludePreviousQuestionnaire)
@*<input type="checkbox" name="SearchCertRequest.IncludePreviousQuestionnaire">*@ Include Previous Questionnaire?
</label>
</div>
</div>
</div>
<!-- Button -->
<div class="form-group">
<label class="col-md-4 control-label" for="searchCertBtn"></label>
<div class="col-md-4">
<button id="searchCertBtn" name="searchCertBtn" type="submit" class="btn btn-primary">Search</button>
</div>
</div>
</fieldset>
型号:
public class SearchCertRequest
{
[Required]
public long CertID { get; set; }
[Required]
public string CertAuthCode { get; set; }
public bool IncludePreviousQuestionnaire { get; set; }
}
存在模型对于第二个表格中下一个:
更新
public class SearchViewModel
{
public SearchCertModel CertModel { get; set; } // Serch Result
public SearchCertRequest SearchCertRequest { get; set; } // Search Request
}
议决:我从搜索表单局部视图,现在它的工作。有人可以解释为什么吗?谢谢。
什么是您的第二种形式的模型? (它是一个包含属性SearchCertRequest的类),所以你的post方法参数应该是该模型,而不是'SearchCertRequest' – 2014-09-26 10:18:18
@StephenMuecke,是的。请检查更新 – demo 2014-09-26 10:24:24