我读了这个有用的例子http://msdn.microsoft.com/en-us/library/gg508808%28v=vs.98%29.aspx?cs-save-lang=1&cs-lang=vb#code-snippet-2用于 MVC3 中的远程验证,当我创建新项目时效果很好;但是,当我尝试编辑新创建的项目时,我遇到了麻烦。
我有一个这样的模型
Imports System.ComponentModel
Imports System.ComponentModel.DataAnnotations
Imports System.Web.Mvc
Imports System.Collections.Generic
Public Class Language
Public Property LanguageId As Integer
<Display(Name:="DisplayNameLanguageName", ResourceType:=GetType(Resources.Language)),
Required(ErrorMessageResourceName:="ErrorMessageLanguageNameRequired", ErrorMessageResourceType:=GetType(Resources.Language)),
StringLength(20),
Remote("IsNameAvailable", "Language", "AdminArea", ErrorMessageResourceName:="ErrorMessageNameNotAvailable", ErrorMessageResourceType:=GetType(Resources.Language))>
Public Property Name As String
Public Property Flag as String
End Class
在控制器“语言”类中,我有......
'OutputCache needed for remote validation
<OutputCache(Location:=OutputCacheLocation.None, NoStore:=True)>
Public Class LanguageController
Inherits System.Web.Mvc.Controller
Private db As StoreEntities = New StoreEntities
'remote validation for duplicates
Public Function IsNameAvailable(Name As String) As JsonResult
Return Json(Not db.Languages.Any(Function(x) x.Name = Name), JsonRequestBehavior.AllowGet)
End Function
[...]
从“Create.vbhtml”视图中,我可以创建一种新语言,但从“Edit.vbhtml”中,我不能只编辑 Flag 属性,为 Name 保留相同的值,因为验证开始了。我也被迫更改 Name 属性。
我该如何解决这个问题?