加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – MVC3编辑器模板不生成客户端验证

发布时间:2020-12-15 21:51:45 所属栏目:百科 来源:网络整理
导读:我有一个问题,基本上我有一个包含很多字段的表单,并且它们都有一个必需的属性集,所以当你把它留空并点击确定时,你会得到客户端验证,它变成红色.它对于管理EditorTemplate的一切都很好. 我的模型如下: public class MyModel{ [Required] public string Usern
我有一个问题,基本上我有一个包含很多字段的表单,并且它们都有一个必需的属性集,所以当你把它留空并点击确定时,你会得到客户端验证,它变成红色.它对于管理EditorTemplate的一切都很好.

我的模型如下:

public class MyModel
{
  [Required]
  public string Username{get;set;}

  public Location Loc{get;set;}
}

public class Location
{
    [Required]
  public string Loc1{get;set;}
    [Required]
  public string Loc2{get;set;}
}

我在主视图中有以下内容:

@Html.EditorFor(m => m.Location,Model.Location)

这是我的EditorTemplate:

<tr>
    <td class="editor-label">
        @Html.LabelFor(m => m.Loc1)
    </td>
    <td class="editor-field">
        @Html.DropDownListFor(m => m.Loc1,Model.Locs==null?Enumerable.Empty<SelectListItem>():Model.Locs,"---select--",new { @class = "location-ddl" })
    </td>
    <td>
        @Html.ValidationMessageFor(m => m.Loc1)
    </td>
</tr>

经过调查后,我注意到它产生的HTML如下:

<select name="Location.Loc1" id="Location_Loc1">

正如您所看到的,它缺少客户端验证的一些属性,通常它应该是这样的:

<select name="Loc1" id="Loc1" data-val-required="The Loc1field is required." data-val="true">

我的问题是,为什么编辑器模板不能在客户端生成验证的正确html输出,以及如何解决它?

只是为了一个注释它确实在服务器端工作,所以如果这些选择在服务器端是空的,它将被标记为未填写并发回.但是,我仍然想了解编辑器的行为以及修复它的方法.

谢谢

解决方法

您可以使用Html.GetUnobtrusiveValidationAttributes(“Location.Loc1”)来获取验证属性.
参见文档 here.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读