我有一个名为Machinefilter的视图
@using (Html.BeginForm())
{
<div id="filterDiv">
<fieldset>
<legend>Filter</legend>
<table>
<tr>
<td>
@Html.Label("Machine Serial No :")
</td>
<td>
@Html.TextBoxFor(m => m.MachineSrNo, new { @id = "SearchSerialNo" })
</td>
<td>
@Html.Label("City :")
</td>
<td>
@Html.DropDownListFor(m => m.CityId, new SelectList(ViewBag.Cities, "CityId", "CityName"), "--Select City--", new { @id = "drpCity" })
</td>
<td>
@Html.Label("Bank Branch :")
</td>
<td>
@Html.DropDownListFor(m => m.BankBranchId, new SelectList(ViewBag.BankBranch, "BankBranchId", "Name"), "--Select Bank Branch--", new { @id = "drpBankBranch" })
</td>
</tr>
</table>
</fieldset>
</div>
<p>
<input type="submit" value="Search" />
<input type="reset" value="Clear" />
</p>
}
Run Code Online (Sandbox Code Playgroud)
每当我点击"搜索"按钮时,它就显示默认验证.我没有对此视图进行任何验证.
即使您没有使用验证属性修饰属性,ASP.NET MVC仍然会进行几次验证.这两个验证是类型检查和必需.如果使用不可为空的内置数据类型(如整数,日期时间等),则会发生这两种验证.
我希望你有属性作为类型整数.如果不提交隐式验证失败并且出现错误,则整数属性应具有某些值.
为避免这种情况,您可以使用可空类型.
对于前者
public class Model
{
public int? CityId{get;set;}
}
Run Code Online (Sandbox Code Playgroud)
对于 MVC5,只需将data_val = false添加到您不想验证的帮助程序中。
@Html.TextBoxFor(m => m.MachineSrNo, new { @id = "SearchSerialNo", data_val = false })
Run Code Online (Sandbox Code Playgroud)