当尝试使用DataAnnotations提交模型中具有自定义验证集的表单时,出现错误消息“找不到路径'/ ItemController / IsAssetAvailable'的控制器或未实现IController”。
控制器布局:
控制器代码:
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>
答案 0 :(得分:2)
问题似乎来自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; }
相关问题: