Почему мое действие ASP.NET ищет неправильный вид? - PullRequest
1 голос
/ 23 декабря 2010

У меня есть простое действие:

    public ActionResult CommentError(string error)
    {
        return View(error);
    }

У меня есть простое частичное представление под названием CommentError.ascx:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<String>" %>

<%: Model %>

Когда я перехожу к представлению непосредственно, перейдя к myurl.com/find/Comments/CommentError, представление отображается нормально ... без ошибок.

Но когда я перехожу к myurl.com/find/Comments/CommentError?error=SomeErrorString, вместо привязки строки запроса к string error, он ищет представление под названием SomeErrorString.ascx.

Почему это происходит?

Редактировать
Обратите внимание, у меня есть собственный global.asax, как указано путями, которые я использую (/ find / Comments / CommentError ::: / find / {controler} / {действие})

Ответы [ 3 ]

6 голосов
/ 24 декабря 2010

Как уже упоминалось, MVC ищет представление, названное так же, как строковый параметр.Чтобы этого избежать, нужно привести его к объекту ...

public ActionResult CommentError(string error)
{
    return View((object)error);
}
4 голосов
/ 24 декабря 2010

Как правило, вам следует избегать объекта Model, передаваемого помощнику View() типа string. Это причина вашей ошибки.

MVC ищет View с именем , каков ваш строковый параметр. Потому что это то, что лучше всего соответствует перегрузке View(): перегрузка View(string) использует параметр string в качестве имени загружаемого представления.

Вам следует инкапсулировать данные модели (строку) в пользовательский тип или вместо этого передать эту информацию через коллекцию ViewData.

0 голосов
/ 24 декабря 2010

В качестве альтернативного ответа (только для образования) вы можете просто вызвать другую перегрузку View ()

return View("CommentError", null, error);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...