我仍然是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>
}
答案 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)
希望这能回答你的问题。
干杯, 丹尼