Asp.net mvc 禁用下拉列表的默认验证

Asp.net mvc 禁用下拉列表的默认验证,asp.net-mvc,Asp.net Mvc,我有一个叫做Machinefilter的视图 @using (Html.BeginForm()) { <div id="filterDiv"> <fieldset> <legend>Filter</legend> <table> <tr> <td>

我有一个叫做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>
}
@使用(Html.BeginForm())
{
滤器
@标签(“机器序列号:”)
@Html.TextBoxFor(m=>m.MachineSrNo,new{@id=“SearchSerialNo”})
@Html.Label(“城市:”)
@DropDownListFor(m=>m.CityId,新建选择列表(ViewBag.Cities,“CityId”,“CityName”),“--Select City--”,新建{@id=“drpCity”})
@Html.Label(“银行分行:”)
@DropDownListFor(m=>m.BankBranchId,新建选择列表(ViewBag.BankBranchId,“BankBranchId”,“Name”),“--Select Bank Branch--”,新建{@id=“drpBankBranch”})

}

在这里,每当我点击“搜索”按钮时,它都会显示默认验证。我没有对此视图进行任何验证。

检查您针对此视图使用的模型。 您必须在那里使用Required属性。
从那里删除相同的属性。

ASP.NET MVC隐式地执行两次验证,即使您不使用验证属性装饰属性。这对验证是类型检查,并且是必需的。如果使用不可为null的内置数据类型(如integer、datetime等),则会发生这两种验证

我希望您具有类型整数的属性。如果未提交隐式验证失败并出现错误,则integer属性应该具有一些值

为了避免这种情况,可以使用可空类型。

例如

public class Model
{
   public int? CityId{get;set;}
}

对于MVC5,只需将data_val=false添加到不需要验证的帮助器中即可

@Html.TextBoxFor(m => m.MachineSrNo, new { @id = "SearchSerialNo", data_val = false  })

在下一次得出结论之前,请检查DropDownList for的默认工作方式。默认情况下,您有一个与列表关联的int。第一项的默认值并不总是0,它可能为null。在这种情况下,用户需要使用int?。再说一次,在你认为这是用户错误之前,我已经读过了。效果很好。荣誉