2

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

背后的动机是什么?

4

1 回答 1

1

可能是一致性。

自原始 ASP 模型以来,查询字符串一直是默认值。如果您想获取数据,如果查询字符串上也有相同的名称,那么您总是需要从那里显式获取值。

于 2008-09-29T21:47:10.967 回答