2012-04-19 7 views
1

私は自分のプロジェクトに立ち往生しています。 プロジェクトには3つのレイヤーがあります。モデルなしでMVC3の強力な型ビューを検証する方法

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

WCFサービスは、MVCアプリケーションへの他の層からデータを取り出す手順(データアクセス層)とリターンを持つクラスを持っている私はから(強いタイプのビューを作成した (これには問題ありません) wcfサービスのリファレンス)、それは非常によく私はこのビューを検証する方法を知っていない購入しています!

私は、検証に関する多くの記事を見てきましたし、そのほとんどは、モデルとデータアノテーションを使用しているが、それは私の場合ではありません。私は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> 

助けてください!私はいくつかのアイデアが必要...ありがとう。

+0

をお使いのモデルのメタデータを検証するために設定されていないので、何も起こらない理由がありますプロパティ。どのように検証する必要があるか、あなたの視点に何かを知らせなければなりません。検証にデータアノテーションを使用しない理由は何ですか? – Dmitry

+0

あなたの質問タイトルは混乱していますが、モデルがなければどのようにビューに強く型付けされるのでしょうか?また、あなたのモデルを投稿してください... – Rafay

+0

私はなぜこの質問はWCFでタグ付けされるのだろうか?私は個人的にWCF + MVC3経験を持つ人々は、この同じ問題に遭遇している可能性が高いと私の英語のため申し訳ありませんすべての –

答えて

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"}); 
     } 
    } 
} 
 
関連する問題