gpt4 book ai didi

jquery - 客户端验证不适用于 ASP.NET MVC 2 中的子属性?

转载 作者:行者123 更新时间:2023-12-01 06:08:43 24 4
gpt4 key购买 nike

我有一个名为 User 的对象,具有 Name 属性和 Required 属性。

public class User
{
public int Id { get; set; }

[Required]
public string Name { get; set; }
}

我创建了一个文本框,如下所示:

<%= Html.TextBoxFor(model => model.Name) %>

启用客户端验证时,Name 已在客户端得到完美验证。

但是,如果我创建一个 ViewModel,其中 User 现在是一个属性

public class UserModel
{
public User TheUser { get; set; }
public string SomeOtherProperty { get; set; }
}

并创建我的文本框

<%= Html.TextBoxFor(model => model.TheUser.Name) %>

然后客户端验证失败。表单在未经过客户端验证的情况下发布,并发现错误。

看起来 javascript window.mvcClientValidationMetadata 像以前一样被填充,没有明显的差异。

什么给了?有什么我需要做的吗?

我正在使用

  • ASP.NET MVC 2 RC2(使用 .NET 3.5/VS2008)
  • 来自最新 Futures 下载的 MicrosoftMvcJQueryValidation.js

编辑:

经过仔细检查,window.mvcClientValidationMetadata 没有按应有的方式填充。未指定验证规则:

{"FieldName":"TheUser.Name","ReplaceValidationMessageContents":true,"ValidationMessageId":"TheUser_Name_validationMessage","ValidationRules":[]}

最佳答案

您应该为您的用户类创建一个编辑器模板。加载它Html.EditorFor(model => model.User, "User"),其中“User”是编辑器模板的名称。

用户类应该是此编辑器模板的 View 模型。

然后,在用户的编辑器模板中,调用其属性的编辑器模板。

MVC 的开箱即用客户端验证应该可以正常工作。

关于jquery - 客户端验证不适用于 ASP.NET MVC 2 中的子属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2362995/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com