MVC3 Remote属性,如何实现?

时间:2011-07-06 09:08:14

标签: asp.net-mvc-3 c#-4.0 customization remote-validation

我在解决方案下有一个解决方案,很少有一个名为DomainModel的项目, 其中我写的模型和其他东西主要是基础设施。

现在我有另一个名为WebUI的项目,我在其中使用我的UI(视图,控制器等......)

我想在DomainModel项目中使用Remote属性,该属性必须在WebUI的某些视图中实现。

当我在DomainModel中使用它时,它给了我一个错误,它不能识别Controller并且它是正确的它不能识别它,因为如果我添加WebUI的引用,Vs开始向我发誓,因为它将是循环参考。

如何实现这个?

这是我的代码 提供RemoteValidation的控制器

[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中的远程attr扩展它之后,这是我的实体

 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 个答案:

答案 0 :(得分: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