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





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