远程验证无效

时间:2011-05-05 12:49:29

标签: .net asp.net-mvc-3

我正在试图在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属性或类似的东西。

非“远程”的其他客户端验证正在运行。 可能是什么问题?

感谢。

1 个答案:

答案 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)

字段名称与属性名称匹配很重要。否则什么都不会发生。