Ошибка при попытке настроить пользовательскую проверку в MVC 5 - PullRequest
0 голосов
/ 12 декабря 2018

Я получаю сообщение об ошибке «Контроллер для пути '/ ItemController / IsAssetAvailable' не найден или не реализует IController» при попытке отправить мою форму, для которой установлен пользовательский контроль в модели с использованием DataAnnotations.

Расположение контроллера:

Controller design

Код контроллера:

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>

1 Ответ

0 голосов
/ 13 декабря 2018

Проблема возникает из-за имени контроллера, объявленного внутри RemoteAttribute, например:

[Remote("IsAssetAvailable", "ItemController", ErrorMessage = "Asset # already exists.")]
public string Asset_Tag_Nbr { get; set; }

, которое вы используете RouteAttribute с 2 перегрузками :

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; }

Проблема, связанная с данной:

Ошибка на основе удаленной проверки в mvc

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...