MVC4 HTML.ValidationMessageFor未显示验证消息

时间:2014-01-10 18:49:36

标签: asp.net-mvc asp.net-mvc-4 jquery c#-4.0 razor

我想知道为什么我的验证消息没有出现?

这是我的Razor页面

@model MyViewModel
@{
 Layout = "~/Views/Shared/_MainLayout.cshtml";
    var listErrors = ViewBag.listErrors as Array;
}
<section class="selectconfiguration">
    <h3 class="active">Add Rule</h3>
    <div class="con-section">

         @{Html.EnableClientValidation(true);}
        @{Html.EnableUnobtrusiveJavaScript();}
        @using (Html.BeginForm("AddRules", "Aliases", "HttpPost"))
        {


            @Html.ValidationSummary(true)
            <table>
                <tr>
                    <td class="phone-options-label-column">
                        <div class="editor-label">
                            @Html.Label("Alias String:")
                        </div>
                    </td>
                    <td>

                        @Html.EditorFor(m => m.AliasString,new {@id="txtAliasString"})
                    </td>
                    <td> @Html.ValidationMessageFor(m => m.AliasString)</td>

                </tr>
                 <tr>
                    <td class="options-label-column">
                        <div class="editor-label">
                            @Html.Label("Select an Associated Model:")
                        </div>
                    </td>
                    <td>
                       @Html.DropDownList("ddlModels", new SelectList(Model.Models, "Id", "Name", ""), "Unknown", new { @class = "mselectDDContItem" })
                    </td>
                    <td>
                         </td>
                </tr>
                </table>
        }
       <div>
                <input type="submit" value="Add Rule" id="btnAddRule" name="AddRule" />
            </div>
        </div>
    </section>

这是我的ViewModel

  public class MyViewModel
        {
            [Required(ErrorMessage = "alias string required")]
            [StringLength(30, ErrorMessage = "AliasString cannot be larger than 30 characters")]
           public string AliasString { get; set; }      
           public IEnumerable<IParameter> Models { get; set; }
           public string StatusMessage { get; set; }
        }

on clciking addRules按钮会触发我的jquery clcik事件

<script type="text/javascript">
    $(document).ready(function () {

        $("#btnAddRule").click(function (e) {
            e.preventDefault();

            var params = {
                'aliasString': $("#txtAliasString").val(),
                'modelId': $("#ddlModels").val()
            };
            $.ajax({
                url: "/Aliases/AddRules",
                type: "POST",
                dataType: 'json',
                data: JSON.stringify(params),
                async: false,
                cache: false,
                traditional: true,
                contentType: 'application/json',
            }).done(function () {
            }).complete(function () {
            }).success(function (dv) {
            });
        });

    });
    </script>

我在布局页面上也有这些脚本引用

<script src="@Url.Content("~/Scripts/MicrosoftAjax.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/MicrosoftMvcAjax.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery-ui-1.8.11.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery.treeview.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery.ui.selectmenu.js")" type="text/javascript"></script>

    <script src="@Url.Content("~/Scripts/modernizr-1.7.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/global.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery.nad.session.js")" type="text/javascript"></script>
    <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>
    <script src="@Url.Content("~/Scripts/MicrosoftMvcValidation.js")"></script>

我不知道为什么验证没有解雇。 如果我也单击带有空文本框的按钮,我可以看到回发发生,并且modelstate.isValid返回true给控制器。

2 个答案:

答案 0 :(得分:4)

在我的jquery按钮单击功能中,我添加了$('#myForm')。valid()然后我的验证开始显示。

$("#btnAddRule").click(function (e) {


if ($('#myForm').valid()) {



}


});

答案 1 :(得分:0)

只需在表单中放置提交按钮,验证就可以正常工作

相关问题