【问题标题】:How to show an error message if the user chooses the default option?如果用户选择默认选项,如何显示错误消息?
【发布时间】:2014-07-01 11:06:43
【问题描述】:

我的View 中有一个DropDownList,它填充在控制器中,并使用ViewBag.PussibleManager 传递给View

@Html.DropDownList("PussibleManager", null, new { @class = "form-control" })

这个ddl的第一项是“请选择...”,它的值设置为-1。
如果用户按下保存按钮,我如何检查所选项目是否为“请选择...”并显示类似Html.ValidationMessage 的错误消息?

(我想强制用户选择经理,否则保存按钮不起作用!)

【问题讨论】:

    标签: c# asp.net-mvc validation


    【解决方案1】:

    您可以使用 JQuery UI 自动完成修改为组合框 (http://jqueryui.com/resources/demos/autocomplete/combobox.html)

    P.S.:看看页面代码。

    【讨论】:

      【解决方案2】:

      将以下代码行添加到您的视图中:

      @Html.Validate("PussibleManager")
      

      然后在动作结果中加入类似如下代码的内容:

      public ActionResult NameOfAction(NameOfViewModel model)
      {
          if (model.PussibleManager = 0)
          {
              ModelState.AddModelError("PussibleManager", "ErrorMessageHere");
          }
      
          if (ModelState.IsValid)
          {
             // DO SOMETHING HERE
          }
      
          return View(model);
      }
      

      将会发生的是,当表单提交时(假设它是一个表单),它将发布到服务器。它会发现 DDL 存在错误,然后在遇到 ModelState.IsValid 时不再继续,而是返回 false,返回视图并返回错误消息。

      这是众多示例之一,您可以在要传回的 ViewModel 上使用 DataAnnotations。此外,NameOfViewModel 只是一个类,其中包含您要从视图传回服务器的项目。

      或者,您可以根据其他用户的响应使用 JQUERY 验证。

      【讨论】:

      • 感谢您的回答,正如我所说,此下拉列表已填写在我的控制器中,并且在 ViewModel 中不存在。
      • 仍然按照我给你的例子,但是把NameOfViewModel model(参考ActionResult)改为string PussibleManager。哦,删除 return View(model); 只说 return View(); 如果您仍然不喜欢答案,我的建议是查看 JQUERY Validation。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-17
      • 2019-03-22
      • 1970-01-01
      • 1970-01-01
      • 2013-01-14
      • 2014-03-28
      • 2020-06-19
      相关资源
      最近更新 更多