【问题标题】:ASP.NET MVC: Client validation for complex patial viewsASP.NET MVC:复杂空间视图的客户端验证
【发布时间】:2014-03-30 06:45:45
【问题描述】:

我有这个视图模型:

public class Letter
{
  public strng Name{get;set;}

  [UIHint("UserSelector")]
  [Required]
  public List<int> Users{get;set;}
}

为了渲染 Letter 视图模型,我使用 Html.EditorForModel()。 EditorTemplate "UserSelector" 是复杂的视图,如下所示:

在提交表单之前,我为选定的用户手动生成隐藏字段控件,显然 RequiredAttribute 不适用于 Users 属性。什么是强制 UserSelector 视图“理解”RequiredAttribute 的“真正”方式?

【问题讨论】:

    标签: asp.net-mvc validation


    【解决方案1】:

    你可以先有一个空值的字符串,然后在隐藏的输入中使用它,然后让它成为必需的。每次客户端从左到右添加用户时,更新隐藏的输入值,如“Usera,Userb ....”。所以当客户端尝试提交表单时,这个隐藏的输入必须有值。

    【讨论】:

    • 这是否意味着我必须自己处理复杂视图中的验证:为隐藏字段添加所需属性、显示验证消息等?
    • 没有。对于您的情况,只需输入一个字符串并为此添加一个 Required 属性,MVC 会为您进行验证。
    • 在提交之前,我为每个 id 生成每个隐藏的输入:如果我选择 tom(id:4) 和 mark(id:5) 然后我创建 。您想对所有值使用一个隐藏字段吗?是否需要额外解析才能将其转换为 List
    • 是的,您只需要隐藏字段,每次客户选择一个用户(使用 jquery 或 js)时,您都可以填充该字段,然后将其与您的表单一起发布到您的操作中。在那里您可以轻松地将其解析为 int 变量列表
    • 我喜欢我的方式,因为它不需要额外的解析并且模型绑定可以开箱即用。这是stackoverflow.com/questions/6428907/… 发布关于用于此目的的自定义属性(列表必需)。
    猜你喜欢
    • 2010-09-14
    • 2014-07-21
    • 1970-01-01
    • 1970-01-01
    • 2016-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-12
    相关资源
    最近更新 更多