0

ソリューションの下にソリューションがあり、DomainModel と呼ばれるプロジェクトの 1 つがいくつかあります。そこでは、モデルやその他の主にインフラストラクチャを記述します。

今、私は自分の UI (ビュー、コントローラーなど) を行う WebUI と呼ばれる別のプロジェクトを持っています。

WebUI の特定のビューに実装する必要がある DomainModel プロジェクトで Remote 属性を使用したいと考えています。

私がDomainModelでそれを使用すると、コントローラーを認識しないというエラーが表示されます.WebUIの参照を追加すると、循環参照になるため、Vsが私を罵倒し始めるため、正しく認識されません。 .

これを実装する方法は?

これは、RemoteValidation を提供する私のコード Controller です

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

//DomainModel プロジェクトの実際のエンティティ

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; }
}

これは、WebUI.Models のリモート属性で拡張した後の私のエンティティです。

 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>
4

1 に答える 1

1

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

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

ScottGu が http://weblogs.asp.net/scottgu/archive/2010/01/15/asp-net-mvc-2-model-validation で示しているように、独自のクラスに検証を配置することもでき ます。 aspx

(最後のステップの前に、投稿を見てください)

これも見てください:生成された部分クラスへの DataAnnonations の追加

于 2011-07-06T09:20:06.763 に答える