0

我正在开发一个 MVC 3 应用程序,该应用程序在某些时候需要用户提供一些数据。然后将数据发送到外部 DLL(我不允许更改它)。传输是通过将对象传递给函数来完成的,这样对象就可以成为我的视图模型。

问题是我无权将属性添加到模型中,也没有添加元数据类的权限。

我决定使用使用 JQuery 的自定义验证机制,所以我制作了这样的辅助函数:

@helper TextBox(string name, object value = null)
    {
        var val = value ?? "";
    <tr>
        <td class="label">@name :
        </td>
        <td>
            <input type="text" name="@name" id="@name" value="@val" />
        </td>
    </tr>
}

@helper ValidationMessage(string name)
    {<span class="field-validation-valid" data-valmsg-replace="true" data-valmsg-for="@name"></span>}

@helper TextBoxRequired(string text, string fildName, object value = null, string message = "*")
    {
        var val = value ?? "";
    <tr>
        <td class="label">@text :</td>
        <td>
            <input type="text" name="@fildName" id="@fildName" value="@val" data-val="true" data-val-required="@message" />
            @ValidationMessage(fildName)</td>
    </tr>
}

我已经包含了 jquery-1.8.2、jquery.validate 和 jquery.validate.unobtrusive,但它不起作用。

任何帮助表示赞赏。

编辑:网络配置设置:

  <appSettings>
    <add key="webpages:Version" value="1.0.0.0" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
  </appSettings>

我正在使用 Firefox、Chrome 和 IE 进行启用 JavaScript 的测试。

4

1 回答 1

2

我建议您使用视图模型。将不允许更改的域模型保留在其程序集中。然后让您的控制器从视图中获取/传递视图模型。这些视图模型是您专门为给定视图的要求定义的类。然后可以使用您需要的任何验证数据注释来装饰视图模型属性。

然后在您的视图中使用标准和强类型的助手,例如Html.TextBoxForHtml.ValidationMessageFor,不要在某些助手中重新发明轮子。

顺便说一句,为了使客户端验证正常工作,您至少需要按此顺序提供以下 3 个参考:

  1. jquery
  2. jquery.validate
  3. jquery.validate.unobtrusive
于 2012-10-23T19:49:13.280 回答