【问题标题】:Add Validation Message To View添加验证消息以查看
【发布时间】: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 =&gt; m.Address, "")?这应该显示在控制器中为该属性添加的所有模型状态错误。还有 @Html.ValidationSummary() 显示所有模型状态错误。
  • 按照 zgood 说的做,并将模型返回到您的视图中。 return View(collection)
  • 另外,不要忘记将 Get 和 Post 的 ActionResults 分开,不确定您是否要在此处合并两者。
  • 对我来说最后一点,在这种情况下,您应该将 [Required] 数据属性放在模型中的 Address 属性上方,并让 asp.net 引擎为您处理此类验证。
  • @adam78 好吧,您可以将所有验证错误塞进字典或某种类型的集合中,然后将其放入ViewBag 或其他任何内容中,然后在视图中对其进行迭代。但如果没有模型,一切似乎都没有了。当验证失败时,您将如何在表单上显示值?这将是一个只有验证错误的空白表单,用户必须再次填写所有字段。

标签: asp.net-mvc validation razor


【解决方案1】:

我会选择 html 助手。

@Html.ValidationMessage("Address") 

这将自动生成 HTML:

<span class="field-validation-valid" data-valmsg-for="address" data-valmsg-replace="true"></span>`

您的代码看起来正确。

if (string.IsNullOrEmpty(collection["Address"]))
{
  // Set the field validation error span message
  ModelState.AddModelError("Address", "This field is required.");
 return View();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-13
    • 2014-02-18
    • 1970-01-01
    • 2012-08-24
    • 2017-02-20
    • 2017-05-30
    相关资源
    最近更新 更多