Возвращение формы, строки запроса, значений cookie по приоритету в ASP.NET MVC - PullRequest
2 голосов
/ 29 сентября 2008

Мне интересно, почему строка запроса предпочтительнее при получении значений из пользовательского запроса. Куда? 1) Код System.Web.Mvc.DefaultModelBinder выглядит следующим образом (только его часть):

HttpRequestBase request = controllerContext.HttpContext.Request;
    if (request != null)
    {
        if (request.QueryString != null)
        {
            values = request.QueryString.GetValues(modelName);
            attemptedValue = request.QueryString[modelName];
        }
        if ((values == null) && (request.Form != null))
        {
            invariantCulture = CultureInfo.CurrentCulture;
            values = request.Form.GetValues(modelName);
            attemptedValue = request.Form[modelName];
        }
    }

2) Если у меня есть метод в контроллере с этой подписью:

public ActionResult Save(int? x, string y) {...

параметры (x, y) привязаны к значениям из строки запроса, а не из формы. Я ожидаю, что значения из Request.From имеют более высокий приоритет, чем из Request.QueryString.

Редактировать: Я вижу, что второй случай вызван первым (DefaultModelBinder), я прав?

Какая мотивация позади?

1 Ответ

1 голос
/ 30 сентября 2008

Согласованность, вероятно.

Строка запроса была по умолчанию со времени оригинальной модели ASP. Если вы хотите получить данные в форме, которая вам всегда была нужна, чтобы получить значения оттуда явно, если те же имена также есть в строке запроса.

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