Ошибка со строкой RouteValue, имя которой совпадает с именем контроллера действий - PullRequest
0 голосов
/ 10 октября 2011

У меня изначально был следующий код в представлении:

return RedirectToAction("Error", new { error = "User Already Exists" });

Это вызвало ошибку просмотра не найдена:

enter image description here

Изменение кода наследующее прекрасно работает:

return RedirectToAction("Error", new { errorid = "User Already Exists" });

Учитывая, что оба являются просто строковыми именами, я уверен, что я вызываю одну и ту же перегрузку в обоих случаях, но я просто не могу понять, что здесь не так / почему он думает, что янужно другое представление.

Что я сделал не так?


@ SLaks 'Request -

    public ActionResult Error(string errorid)
    {
        ViewBag.error = errorid;

        return View();
    }

(раньше, errorid был просто ошибкой)

Ответы [ 2 ]

2 голосов
/ 10 октября 2011

Скорее всего, произошло то, что ваш метод Error был сконструирован как

public ActionResult Error(string errorid) {
    ViewBag.error = errorid;

    return View(errorid);
}

вместо того, чтобы вы использовали ViewBag.Это приведет к точной ошибке, которая произошла.Вы, вероятно, имели свою модель как @model string.Причина, по которой это может быть неудачным и является причиной этой ошибки, заключается в том, что подпись для View(string) предполагает, что вы передаете, какое представление (а не модель) вы хотите видеть.В этом случае, чтобы исправить это, вы захотите сделать что-то вроде return View("Error", errorid);, где вторым параметром является ваша модель.

1 голос
/ 10 октября 2011

ASP.Net MVC сопоставляет маршруты с действиями, используя имена параметров.

Следовательно, имена параметров в маршруте / URL должны точно соответствовать параметрам действия.

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