[英]Custom Validation Attribute error message not showing with ValidationMessageFor
[英]ValidationMessageFor not showing an error message
我在这里阅读了一些类似的问题和答案,但是这两种解决方案都不能解决我的问题。
问题是验证可以防止将值保存到数据库,但不会显示错误消息。 我想我遵循了所有步骤来实现这一点,但它没有帮助:
Model:
public class DocumentsModel
{
[Required(ErrorMessage = "Choose decision")]
public string Decision { get; set; }
[Required(ErrorMessage = "Choose date")]
public DateTime? Manual_date { get; set; }
}
看法:
<td>
@Html.TextBoxFor(modelItem => item.Manual_date, new { @type = "date", @hidden = "hidden", @Name = "Manual_date", @class = "form-control datepicker" })
@Html.ValidationMessageFor(modelItem => item.Manual_date)
</td>
<td>
@Html.DropDownListFor(modelItem => item.Decision, new List<SelectListItem>
{new SelectListItem { Text="None", Value= "None", Selected=true},
new SelectListItem { Text="xyz", Value="xyz"}
}, new { Name = "Decision", @hidden = "hidden" })
@Html.ValidationMessageFor(modelItem => item.Decision)
</td>
Controller:
[HttpPost]
public ActionResult Update(DocumentsModel doc)
{
RRRdb db = new RRRdb();
if (ModelState.IsValid)
{
//saving...
}
return RedirectToAction("XYZ");
}
脚本:
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/jqueryval")
Web.config:
<appSettings>
<add key="webpages:Version" value="3.0.0.0" />
<add key="webpages:Enabled" value="false" />
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>
当然,我在需要时使用 jQuery 使下拉列表和文本框可见,因此用户可以使用这些字段。 正如我在开始时所说的那样 - 验证本身有效(不保存字段中的值,除非它们被填充)但消息不会显示在字段旁边。 我的代码有什么问题?
将您的元素放在form
标签中以查看
@model Test.Models.DocumentsModel
<form action="update" method="post">
<div>
@Html.TextBoxFor(modelItem => modelItem.Manual_date, new { @type = "date", @hidden = "hidden", @Name = "Manual_date", @class = "form-control datepicker" })
@Html.ValidationMessageFor(modelItem => modelItem.Manual_date)
</div>
<div>
@Html.DropDownListFor(modelItem => modelItem.Decision, new List<SelectListItem>
{new SelectListItem { Text="None", Value= "None"},
new SelectListItem { Text="xyz", Value="xyz"}
}, "select..", new { Name = "Decision" })
@Html.ValidationMessageFor(modelItem => modelItem.Decision)
</div>
<div>
<button type="submit">submit</button>
</div>
</form>
并在您的操作中,如果ModelState.IsValid
不为真,则显示验证消息返回您的 model;
// Get
public ActionResult Update()
{
ViewBag.Title = "edit";
return View();
}
[HttpPost]
public ActionResult Update(DocumentsModel doc)
{
RRRdb db = new RRRdb();
if (!ModelState.IsValid)
{
return View(doc);
}
//saving...
return RedirectToAction("XYZ");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.