使用data-val =“true”正确的方法,强制进行必要的验证

时间:2013-11-03 19:13:56

标签: asp.net-mvc html5 razor

我在asp.net mvc web应用程序中有以下视图: -

@using (Ajax.BeginForm("CheckUserPermision", "SecurityRole", 
new AjaxOptions
{
    HttpMethod = "get",
    InsertionMode = InsertionMode.Replace,
    LoadingElementId = "progress2",
    UpdateTargetId = "userSecurityRole"
}))
{


  <div>
    <span class="f">User Name </span> 
        <input  name="username" type="text" data-val="true" data-val-required= "Please enter a value." data-autocomplete-source= "@Url.Action("AutoComplete", "SecurityGroup")"  /> 
<span class="field-validation-valid" data-valmsg-for="username" data-valmsg-replace="true"></span>

</div>

目前,除非用户在“用户名”字段中输入文字,否则用户将无法进行搜索。但我的问题是天气使用data-val="true“正确的方法来强制必要的字段验证?

2 个答案:

答案 0 :(得分:1)

不。只需使用ViewModel即可。

public class SearchNameViewModel
{   
   [Required]
   public string UserName { get;set; }

}

查看

@model SearchNameViewModel
@using (Ajax.BeginForm("CheckUserPermision", "SecurityRole", 
new AjaxOptions
{
    HttpMethod = "get",
    InsertionMode = InsertionMode.Replace,
    LoadingElementId = "progress2",
    UpdateTargetId = "userSecurityRole"
}))
{


  <div>
    @Html.LabelFor(x => x.UserName)
    @Html.TextBoxFor(x => x.UserName,
     new { data_autocomplete_source = Url.Action("AutoComplete", "SecurityGroup") })
    @Html.ValidationMessageFor(x => x.UserName)
</div>

答案 1 :(得分:1)

一个是客户端验证,另一个是服务器端验证。适当的安全编码标准可以让你同时使用。服务器端验证(视图模型数据注释)更安全,但客户端验证允许您在发送请求之前捕获问题。