Мне интересно, почему строка запроса предпочтительнее при получении значений из пользовательского запроса. Куда?
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), я прав?
Какая мотивация позади?