3

Brad Wilson のレシピに従って、目立たないクライアント側の検証を ASP.NET MVC 3 プロジェクトに統合しようとしています。ただし、レンダリングされたビューでは有効になりません。たとえば、私の要素 (エディタ フィールドなど) は規定どおり<input>に属性を受け取りません。data-val

目立たないクライアント側の検証を有効にするために、次のことを行いました。

Web.config:

<configuration>
  <appSettings>
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
  </appSettings>
</configuration>

Options.cs:

public class Options
{
    // Annotate with validation rules, in order to generate client-side validation code 
    [Required, StringLength(60)]
    public string Bugs = "";
}

_Layout.cshtml:

<head>
  <script src="@Url.Content("~/Scripts/jquery-1.6.2.min.js")" type="text/javascript"></script>
  <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
  <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
</head>

Options.cshtml:

@model MyProject.Models.Options

<div id="options-form">
  @Html.ValidationSummary(true)
  <fieldset>
    <legend>Options</legend>
    <div class="editor-label">
      @Html.LabelFor(model => model.Bugs)
    </div>
    <div class="editor-field">
      @Html.EditorFor(model => model.Bugs)
      @Html.ValidationMessageFor(model => model.Bugs)
    </div>
  </fieldset>
</div>

この HTML は、エディター フィールド用に生成されます。

<div class="editor-label">
  <label for="Bugs">Bugs</label>
</div>
<div class="editor-field">
  <input class="text-box single-line" id="Bugs" name="Bugs" type="text" value="" />

ご覧のとおり、data-val属性はありません:(

4

1 に答える 1

3

を使用するのを忘れましたform。あなたのフィールドセットをHtml.BeginForm

<div id="options-form">
@using (Html.BeginForm()) {
  @Html.ValidationSummary(true)
  <fieldset>
    <legend>Options</legend>
    <div class="editor-label">
      @Html.LabelFor(model => model.Bugs)
    </div>
    <div class="editor-field">
      @Html.EditorFor(model => model.Bugs)
      @Html.ValidationMessageFor(model => model.Bugs)
    </div>
  </fieldset>
}
</div>

これは初期化FormContextされ、入力は data-val-* 検証属性を受け取ります

于 2011-09-01T11:59:37.087 に答える