1

私は自分のプロジェクトに行き詰まっています。プロジェクトには 3 つのレイヤーがあります。

  1. ado.net データ モデルを使用したデータ アクセス。
  2. データ アクセス ado.net データ モデルからデータを取得し、シリアル化されたクラスを送信する WCF サービス。
  3. wcf サービスに接続する MVC Web アプリケーション。

wcf サービスには、他の層 (データ アクセス層) からデータを取得し、mvc アプリケーションに戻る手順を持つクラスがあります (これには問題はありません)このビューを検証する方法がわかりません!

検証に関する多くの記事を見てきましたが、そのほとんどはモデルとデータの注釈を使用していますが、私の場合はそうではありません。jquery検証に関する記事をいくつか見つけましたが、試してみましたが何も起こりません...ビューのコードは次のとおりです。

@model SkySolutionsMVC3.ProductCategoryServiceReference.CompositeProductCategory
@{
    ViewBag.Title = "Edit";
}
<h2>
    Edit</h2>
<script src="@Url.Content("~/Scripts/jquery-1.7.2.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>


@using (Html.BeginForm())
{
    @Html.ValidationSummary(true)
    <fieldset>
        <legend>Product Category</legend>
        <div class="editor-label">
            @Html.LabelFor(model => model.Enabled)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Enabled)
            @Html.ValidationMessageFor(model => model.Enabled)
        </div>
        @Html.HiddenFor(model => model.Id)
        <div class="editor-label">
            @Html.LabelFor(model => model.Name)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Name, new { id="Name"})
            @Html.ValidationMessageFor(model => model.Name)
        </div>
        <p>
            <input type="submit" name="btnSave" value="Save" />
        </p>
    </fieldset>
}
<div>
    @Html.ActionLink("Back to List", "Index")
</div>

助けてください!アイデアが必要です...ありがとう。

4

1 に答える 1

0

自分が何を求めているのか完全にはわかりませんが、他の場所からインポートしたクラスを本質的に制御する必要があると言っている場合は、これはどうでしょうか。独自のクラスを作成し、モデルとして使用しているクラスから継承します。ここで、IValidatableObjectから継承し、オーバーライドされたプロパティに適切なアノテーションを追加するか、次のようなValidateメソッドを実装します。


public class MyClass : SkySolutionsMVC3.ProductCategoryServiceReference.CompositeProductCategory, IValidatableObject
{
    [Required]
    public override string Name
    {
        get { return base.Name; }
        set { base.Name = value; }
    }

    public IEnumerable Validate(ValidationContext validationContext)
    {
        if (Name.Length != 5)
        {
            yield return new ValidationResult("Name must be exaclty 5 characters long", new string[]{"Name"});
        }
    }
}

于 2012-04-29T03:54:47.773 に答える