2011-07-06 18 views
0

私はソリューションの下に、ドメインモデルである と呼ばれるプロジェクトはほとんどありません。私のモデルやその他のものは主にインフラストラクチャとなります。MVC3リモート属性、実装方法

は今、私は私のUI行うれるのWebUIと呼ばれる別のプロジェクト(ビュー、コントローラ、など...)私はWebUIの特定のビューで実装しなければならないドメインモデルプロジェクトでのリモート属性を使用したい

を持っています。

DomainModelで使用すると、コントローラを認識せず、認識できないというエラーが表示されます.WebUIのリファレンスを追加するとVsが私に誓うようになります。循環参照である。

これを実装する方法は?

これはこれは私がWebUIの中に、リモートのattrでそれを拡張した後、私の実体であるドメインモデルプロジェクトに

public class SmsCustomer 
{ 
    public int CustomerId { get; set; } 
    public string Cli { get; set; } 
    //this is what i have to validate on server 
    public virtual string SmsCode { get; set; } 

    public DateTime InsertDate { get; set; } 
    public int CustomerDaysChoiceId { get; set; } 
    public int CustomerAmountChoiceId { get; set; } 

    [Required(ErrorMessage = "error")] 
    [StringLength(128, ErrorMessage = "error")]   
    public string SelectedWords { get; set; } 
    public SmsCustomerDaysChoice CustomerDaysChoice { get; set; } 
    public SmsCustomerAmountChoice CustomerAmountChoice { get; set; } 
} 

本当の実体RemoteValidation

[OutputCache(Location = OutputCacheLocation.None, NoStore = true)] 
public class RemoteValidationController : Controller 
{ 
    public JsonResult CheckPassword(string SmsCode) 
    { 
     return Json(12345, JsonRequestBehavior.AllowGet); 
    } 
} 

//を提供しています私のコード コントローラですモデル

public class Customer : SmsCustomer 
    { 
     [Required(ErrorMessage = "Error required")] 
     [StringLength(9, ErrorMessage = "Error length")] 
     [Remote("CheckPassword", "RemoteValidation", ErrorMessage = "Error remote")] 
     public override string SmsCode { get; set; } 
    } 

これは私の意見です

@Html.TextBoxFor(c => c.SmsCode) 
//error span 
<span class="checkbox-form-error" data-valmsg-for="SmsCode" data-valmsg-replace="true">&nbsp;</span> 

答えて

1

リモート検証は、WebUIプロジェクトに固有のものです。

このため、実際のクラスを継承するViewモデルを作成し、リモート検証が必要なプロパティをオーバーライドします。次に、リモート検証のためのコントローラ/アクションを指定することができます。

ScottGuがここに証明するようにあなたはまた、独自のクラスであなたの検証を置くことができます。 http://weblogs.asp.net/scottgu/archive/2010/01/15/asp-net-mvc-2-model-validation.aspx

(最後のステップの前に、ポストを下に見て)

また、このを見てみましょう: Adding DataAnnontations to Generated Partial Classes

+0

あなたはそれを実証できますか? – IamStalker

+0

少し違うソリューションへのリンクを追加しました。それらはバリデーション注釈を含むために別々のクラスを使用します。 – MartinHN

+0

それは私を助けない、それはまだ動作しません。 – IamStalker

関連する問題