ASP.NET MVC中隐藏输入的客户端验证

时间:2013-01-17 00:00:31

标签: asp.net-mvc hidden-field client-side-validation

我仍然是ASP.NET MVC架构的新手。我有一个数据的编辑页面,其中包含一个隐藏的输入。在测试我的页面之后,“保存”按钮没有做任何事情,经过一些调查后发现它是客户端验证问题。

在评论页面中的以下行后:

 @*@Html.HiddenFor(model => model.ID)*@

(其中ID是GUID),页面经过验证和发布。

据我所知,脚手架将此代码放入我的视野中。我只需要知道如何解决这个问题,以便将ID字段正确地发送回控制器,并想知道它为什么没有验证。

这是我的View代码:

@using (Html.BeginForm()) 
{
    @Html.ValidationSummary(true)

    <fieldset>

        <div class="object_basics">
      @Html.HiddenFor(model => model.ID)

        <div class="editor-label">
            @Html.LabelFor(model => model.Title)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Title)
            @Html.ValidationMessageFor(model => model.Title)
        </div>


       <p>
            <input type="submit" value="Save" />
        </p>
    </fieldset>

}

3 个答案:

答案 0 :(得分:1)

您是否尝试为ID添加验证消息?

@Html.ValidationMessageFor(model => model.ID)

答案 1 :(得分:1)

隐藏字段无法正常工作的客户端验证,因为jQuery验证会忽略所有隐藏的标记。
您必须定义HiddenRequiredValidator课程才能实现目标。

您可以阅读解决此问题的解决方案Here

答案 2 :(得分:0)

在视图中,从以下地址更新:

@using (Html.BeginForm()) 

@using (Html.BeginForm(new{ID = model.ID})) 

删除隐藏元素[@ Html.HiddenFor(model =&gt; model.ID)]。

在您的控制器中,更新动作属性,如下所示

public ActionResult YourActionName(string ID, string Title)

希望这能回答你的问题。

干杯, 丹尼