我正在试图在ASP MVC3中进行工作远程验证。我花了几个小时阅读并尝试它,但我没有实现它。
首先......我已将此行添加到Web.config文件中的appSettings
<add key="ClientValidationEnabled" value="true"/>
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
然后,我用dataanotations创建一个类。
Public Class PackageCreationInfo
'Lot of Properties here...
<DisplayName("Id Modalidad")>
<Remote("ModeExists", "PreactivatedLicenses", AdditionalFields:="IdVersion")>
Public Property IdMode As Integer
<Required(ErrorMessage:="La Versión es obligatoria")>
<DisplayName("Id Versión")>
Public Property IdVersion As Integer
End Class
在我看来,我添加了这个脚本
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
我在_layout
中有这些 <script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery-ui.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.datepick-es.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/Plugins/Expander/expand.js")" type="text/javascript"></script>
然后,在我的控制器中,我有这个功能
Public Function ModeExists(ByVal IdMode As Integer, IdVersion As Integer) As JsonResult
Dim ExistModeForThisVersion As Boolean = _ProductApps.ExistModeForVersion(IdMode, 13)
If (ExistModeForThisVersion) Then
Return Json(String.Format("Esta modalidad no está disponible en la versión seleccionada."), JsonRequestBehavior.AllowGet)
Else
Return Json(True, JsonRequestBehavior.AllowGet)
End If
End Function
我的问题是我无法调用此函数。 事实是生成的HTML没有data-val-remote属性或类似的东西。
非“远程”的其他客户端验证正在运行。 可能是什么问题?
感谢。
答案 0 :(得分:0)
对不起......我犯了一个愚蠢的错误(另一个)
我会在这里写下我的错误作为忏悔,因为远程可能性对某人有帮助。
在我看来......我写了
@Html.DropDownList("IdProgramMode", New SelectList(ViewBag.ProductModesList, "Id", "Mode"))
@Html.ValidationMessageFor(Function(model) model.IdMode)
但它应该是
@Html.DropDownList("IdMode", New SelectList(ViewBag.ProductModesList, "Id", "Mode"))
@Html.ValidationMessageFor(Function(model) model.IdMode)
字段名称与属性名称匹配很重要。否则什么都不会发生。