尝试在 MVC 5 中设置自定义验证时出错
Error when trying to set up custom validation in MVC 5
我尝试提交我的表单时收到错误消息 "The controller for path '/ItemController/IsAssetAvailable' was not found or does not implement IController",该表单在模型中使用 DataAnnotations 设置了自定义验证。
控制器布局:
控制器代码:
public ActionResult IsAssetAvailable(string Asset_Tag_Nbr)
{
using (db)
{
try
{
var asset = db.Items.Single(i => i.Asset_Tag_Nbr == Asset_Tag_Nbr);
return Json(false, JsonRequestBehavior.AllowGet);
}
catch (Exception)
{
return Json(true, JsonRequestBehavior.AllowGet);
}
}
}
数据注释:
[Display(Name = "Asset Tag #")]
[Remote("IsAssetAvailable", "ItemController", ErrorMessage = "Asset # already exists.")]
public string Asset_Tag_Nbr { get; set; }
查看:
<div class="form-group col-sm-4">
@Html.LabelFor(model => model.Asset_Tag_Nbr, new { @class = "control-label col-md-12" })
<div class="col-md-10">
@Html.EditorFor(model => model.Asset_Tag_Nbr, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Asset_Tag_Nbr)
</div>
</div>
问题似乎来自于在 RemoteAttribute
中声明的控制器名称,如下所示:
[Remote("IsAssetAvailable", "ItemController", ErrorMessage = "Asset # already exists.")]
public string Asset_Tag_Nbr { get; set; }
您正在使用 RouteAttribute
with 2 overloads:
public RemoteAttribute (string action, string controller)
controller
参数是指包含对应动作方法名的控制器名,不用Controller
后缀。因此,您应该使用 RouteAttribute
参数,如下例所示:
[Display(Name = "Asset Tag #")]
[Remote("IsAssetAvailable", "Item", ErrorMessage = "Asset # already exists.")]
public string Asset_Tag_Nbr { get; set; }
相关问题:
我尝试提交我的表单时收到错误消息 "The controller for path '/ItemController/IsAssetAvailable' was not found or does not implement IController",该表单在模型中使用 DataAnnotations 设置了自定义验证。
控制器布局:
控制器代码:
public ActionResult IsAssetAvailable(string Asset_Tag_Nbr)
{
using (db)
{
try
{
var asset = db.Items.Single(i => i.Asset_Tag_Nbr == Asset_Tag_Nbr);
return Json(false, JsonRequestBehavior.AllowGet);
}
catch (Exception)
{
return Json(true, JsonRequestBehavior.AllowGet);
}
}
}
数据注释:
[Display(Name = "Asset Tag #")]
[Remote("IsAssetAvailable", "ItemController", ErrorMessage = "Asset # already exists.")]
public string Asset_Tag_Nbr { get; set; }
查看:
<div class="form-group col-sm-4">
@Html.LabelFor(model => model.Asset_Tag_Nbr, new { @class = "control-label col-md-12" })
<div class="col-md-10">
@Html.EditorFor(model => model.Asset_Tag_Nbr, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Asset_Tag_Nbr)
</div>
</div>
问题似乎来自于在 RemoteAttribute
中声明的控制器名称,如下所示:
[Remote("IsAssetAvailable", "ItemController", ErrorMessage = "Asset # already exists.")]
public string Asset_Tag_Nbr { get; set; }
您正在使用 RouteAttribute
with 2 overloads:
public RemoteAttribute (string action, string controller)
controller
参数是指包含对应动作方法名的控制器名,不用Controller
后缀。因此,您应该使用 RouteAttribute
参数,如下例所示:
[Display(Name = "Asset Tag #")]
[Remote("IsAssetAvailable", "Item", ErrorMessage = "Asset # already exists.")]
public string Asset_Tag_Nbr { get; set; }
相关问题: