我在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
“正确的方法来强制必要的字段验证?
答案 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)
一个是客户端验证,另一个是服务器端验证。适当的安全编码标准可以让你同时使用。服务器端验证(视图模型数据注释)更安全,但客户端验证允许您在发送请求之前捕获问题。