【问题标题】:ASP.NET Data Annotations: How to share with a JSON client?ASP.NET 数据注释:如何与 JSON 客户端共享?
【发布时间】:2010-12-10 20:11:00
【问题描述】:

我们有两个数据模型:只读视图模型去客户端和“控制”模型发回修改后的数据。本质上,它们是相同的,并且都有这样的数据注释:

// Require nothing but one or more digits
[RegularExpression(@"^\d+$", ErrorMessage = "*")]
public string productid {get;set;}

我们所有的通信都通过控制器方法使用JsonResultJson()

客户端如何尊重这些数据注释?具体来说,像 validate 这样的 JQuery 插件如何接收这些正则表达式、必需的、范围等以供自己使用?

我们有一个响应,其中包含一个带有嵌套集合的标题对象(如产品列表 List)。我们认为 Regex 可以存在于标题中,然后应用于所有表单字段。 但是我们如何将注解转换为 JSON 序列化对象呢?

【问题讨论】:

    标签: c# jquery json asp.net-mvc-2 jquery-validate


    【解决方案1】:

    参见this 博文。

    本质上,您调用了一个 MVC Html Helper 方法<% Html.EnableClientValidation();%>,它将一些 JSON 输出到页面上。然后在MicrosoftMvcJQueryValidation.js 中有一个翻译方法,它为jquery validate 提供每个字段的数据注释。


    cmets 更新

    如果您在不使用 mvc 控件的情况下渲染 HTMLFormElements,这将更加困难。您可能需要查看ViewData.ModelMetadata 才能访问数据注释。可能需要使用自定义 MetaDataProvider 我会考虑使用 MVC3 RC,这样我就可以使用不显眼的验证(数据属性)

    这里有一些链接:

    【讨论】:

    • 如果您从未进入视图,即没有 aspx 页面怎么办?
    • @Dr. Zim - 不确定我是否理解你的问题。您想根据数据注释模型验证数据,还是在 json 中获取数据注释?客户端验证意味着用户输入 - 没有“制作”到我看不到的视图。
    • 我们使用 JQuery Ajax 调用将数据带到客户端,然后使用 Microsoft JQuery 模板呈现内容,并使用 Microsoft 数据链接将数组绑定到表单元素。不知何故,我需要将附加到类的正则表达式转换为 JQuery 验证插件可以使用的东西(例如)。
    • 所以我猜你没有使用 mvc html 助手 - ValidateFor/TextboxFor 等?
    • 不。我在 JSON 返回对象上使用 ModelState.IsValid(),效果很好。只是想知道如何通过将 JSON 直接发送到客户端来与 JQuery Validate 共享这些数据注释。
    猜你喜欢
    • 2015-10-14
    • 1970-01-01
    • 2020-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-24
    • 1970-01-01
    相关资源
    最近更新 更多