我想知道为什么在从用户请求中获取值时首选查询字符串。在哪里?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)引起的,对吗?
背后的动机是什么?