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 からの値よりも優先されると思います。

編集: 2 番目のケースは最初のケース (DefaultModelBinder) が原因であることがわかりました。

背後にある動機は何ですか?

4

1 に答える 1

1

一貫性はおそらく。

クエリ文字列は、元の ASP モデルからの既定値です。同じ名前がクエリ文字列にもある場合、フォームからデータを取得する場合は、常にそこから明示的に値を取得する必要がありました。

于 2008-09-29T21:47:10.967 に答える