【发布时间】:2015-07-03 17:48:22
【问题描述】:
我有 2 页。首先我只有表单来发布搜索数据,其次我也有相同的搜索表单和带有搜索结果的容器。当我从第一种形式发帖时 - 模型到搜索方法的结果符合我的预期,但第二种形式的模型属性被设置为默认值(int - 0、bool - false、string - null 等)
有什么问题?
第一种形式:
<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 -
@StephenMuecke,是的。请检查更新
标签: html asp.net-mvc twitter-bootstrap post