在ASP.NET MVC 5中,ValidationMessageFor方法可用于显示外键的验证信息。以下是一个包含代码示例的解决方法:
假设有两个实体类,一个是Customer,另一个是Order。Order类中有一个CustomerId属性,用于表示订单所属的客户。我们需要在创建订单时验证CustomerId是否存在。
首先,在Order类中添加CustomerId属性以及相应的数据注解:
public class Order
{
// Other properties...
[Required(ErrorMessage = "Customer is required.")]
public int CustomerId { get; set; }
// Other properties...
}
接下来,在OrderController中的Create动作方法中,添加验证逻辑:
public ActionResult Create(Order order)
{
if (ModelState.IsValid)
{
// Save the order to the database
// ...
return RedirectToAction("Index");
}
// If the validation fails, re-populate the customer dropdown list
ViewBag.CustomerId = new SelectList(db.Customers, "Id", "Name", order.CustomerId);
return View(order);
}
最后,在Create视图中使用ValidationMessageFor方法来显示验证信息:
@model YourNamespace.Order
@using (Html.BeginForm())
{
@Html.LabelFor(model => model.CustomerId, new { @class = "control-label" })
@Html.DropDownListFor(model => model.CustomerId, ViewBag.CustomerId as SelectList, "-- Select Customer --", new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.CustomerId)
}
这样,当提交表单时,如果CustomerId为空或者不存在,ValidationMessageFor会显示相应的错误信息。