【发布时间】:2017-10-17 16:51:03
【问题描述】:
假设我有一个没有模型绑定或数据注释的表单。发布表单后,如何在控件下方返回带有验证消息的视图 - 注意我正在尝试在此处进行服务器端验证?
下面是一个例子。
<input name="Address" type="text" value="">
<span class="field-validation-valid" data-valmsg-for="Address" data-valmsg-replace="true"></span>
public ActionResult Create(FormCollection collection)
{
if (string.IsNullOrEmpty(collection["Address"])
{
// Set the field validation error span message
ModelState.AddModelError("Address", "This field is required.");
return View();
}
}
注意:我知道如何使用视图模型和数据注释添加验证。在这种情况下,我无法使用视图模型,因此需要一些方法来手动验证并将验证消息返回给视图。
上面的好像不行
* 更新 *
也许使用 viewData 如下:
<span class="field-validation-valid" data-valmsg-for="Address" data-valmsg-replace="true">@ViewData["Address"]</span>
【问题讨论】:
-
您是否尝试在控件下方添加
@Html.ValidationMessageFor(m => m.Address, "")?这应该显示在控制器中为该属性添加的所有模型状态错误。还有@Html.ValidationSummary()显示所有模型状态错误。 -
按照 zgood 说的做,并将模型返回到您的视图中。
return View(collection) -
另外,不要忘记将 Get 和 Post 的 ActionResults 分开,不确定您是否要在此处合并两者。
-
对我来说最后一点,在这种情况下,您应该将
[Required]数据属性放在模型中的 Address 属性上方,并让 asp.net 引擎为您处理此类验证。 -
@adam78 好吧,您可以将所有验证错误塞进字典或某种类型的集合中,然后将其放入
ViewBag或其他任何内容中,然后在视图中对其进行迭代。但如果没有模型,一切似乎都没有了。当验证失败时,您将如何在表单上显示值?这将是一个只有验证错误的空白表单,用户必须再次填写所有字段。
标签: asp.net-mvc validation razor