ソリューションの下にソリューションがあり、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"> </span>