0

いくつかの入力ボックスを備えた単純なhtmlフォームがあります。[保存]をクリックすると、正しい方法が見つかりますが、データがおかしいです。ルート内のフィールドと同じ名前のフォームフィールド名がある場合、渡される値はルートデータではなく、フォームフィールドデータです。

例えば。

次のルートがあると想像してください。

// Both Get/Post
routes.MapRoute(
    "User-Edit",
    "user/{displayName}/edit",
    new { controller = "Account", action = "edit" });

そして次の方法...

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit([Bind(Exclude = "UserId")]string displayName, 
                               FormCollection formValues)

{...}

ここで、ルートに変数があり、コントローラーアクションにも?displayNameという引数があることに注意してください。displayNameさて、引数データは、ルートではなく、フォームからのものです。

引数データが​​ルートデータであることを確認する方法がわかりませんか?

ここで、ルート変数の名前をtoなどに変更する唯一の修正はありdisplayNameますrouteDisplayNameか?

4

1 に答える 1

1

ModelBindingの規則では、パラメーターは次の場所から入力されることが規定されています。

  • request.form値が存在する場合(あなたのものです!)
  • 次に、RouteData.Values
  • 次にrequest.querystring
  • その後null

(a)このデフォルトの動作をオーバーライドするか、(b)ルート値の名前を変更する必要があります。

私はbと一緒に行きます。

マイク

于 2009-06-04T14:20:00.580 に答える