如何在模型编辑上处理远程属性?ASP.Net MVC3

Shr*_*r S 0 action controller model asp.net-mvc-3 remote-validation

我在我的模型中使用远程属性来检查重复的页面标题如下

public class Page
{
  [Remote("CheckDuplicate", "Page", ErrorMessage = "Title already taken")]
  public string Title { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

在控制器中,我将根据" 检查 "结果返回JsonResult数据,如下所示:

public JsonResult CheckDuplicate(string Title)
{
   var result = db.Pages.Where(a => a.Title == Title).Count() == 0;
   return Json(result, JsonRequestBehavior.AllowGet);
}
Run Code Online (Sandbox Code Playgroud)

这在Create动作中工作正常,但问题是,它限制了我编辑现有页面,因为它正在检查相同的查询.

如何解决这个问题呢?请建议我

Las*_*sen 5

您的问题看起来类似于:ASP.NET MVC 3远程验证允许原始值

我认为诀窍是在模型中使用AdditionalFields你的远程验证属性的参数,并将其与视图中的隐藏字段相结合 - 就像上面的StackOverflow帖子中所建议的那样.然后,您可以将"initial"值与新值一起发送到远程验证方法,并使用这两个参数进行唯一性检查.

另一个如何解决这个问题的例子可以在这里找到:https://stackoverflow.com/a/4756796/700926

该文档AdditionalFields可以在这里找到:http://msdn.microsoft.com/en-us/library/system.web.mvc.remoteattribute.additionalfields(v=vs.98).aspx