2009-05-18 16 views

答えて

62

Mattの正常に動作する必要があります。それでもFormMethod.Postに渡している場合は、しかし、あなたはこのようにそれを実行する必要があります。

Html.BeginForm("action","controller", new { Id = 12345 }, FormMethod.Post); 

第三及び第四のパラメータではなく、ルート値の属性として扱われIdになります反転します。

+0

このメソッドを使用しているときに、既存のルート値が失われています。私のURLは '/ controller/action?type = golden'だったとしましょう。フォームターゲットは'/controller/action/12345'になります。 '/ controller/action/12345?type = golden '。私は既存のルート値を保存して自分自身を追加することができる方法を知っていますか? –

+1

@Akiフォーム内に隠しフィールドとして 'type'を追加してみてください。 –

+0

私はできますが、それは私の問題ではないことが分かります。私がクエリ文字列に 'type'しか持っていなくても、N個のパラメータを持つことができます。これは異なるアクションで異なるかもしれません。それらのすべてのアクションに入り、クエリパラメータを隠しフィールドとして追加するのは本当の苦痛です。 –

10

Html.BeginForm("action", "controller", new {Id = 12345})

+1

が動作しない場合は、フォームタグに属性を追加します。 – mrblah

+4

パラメータ名を確認してください。routeValues - htmlAttributesではなく、そのパラメータを使用していることを確認してください。 –

7
Html.BeginForm("action", "controller", new { id = ViewBag.FileID }, 
FormMethod.Post, new { id = "feedbackform" }) 

クエリーストリングについては、?type=goldenについては、わかりません。もちろん、照会はゲットです。FormMethod.Postの全目的を弱体化させます。クエーストリングデータが必要な場合は、FormMethod.Getを使用できます。これは探しているものかもしれません。

さらに、html.beginformを避け、クエリー・ストリングget + postを手動でフォーム・タグで実行できます。送信ボタンは値がフォーム変数として適切に渡される押された場合、その後

[input type=hidden name="type" value="golden"] 

:フォームを使用している場合

第三に、あなたは隠しフィールドを作ることができます。

関連する問題