1

MVC4 では、

Html.BeginForm("/", null, FormMethod.Post, new{something="demo"})

結果のフォームは

action="//"

どうやらコントローラーとアクションをURLに詰め込もうとしているからです。ただし、HomeController をデフォルトのコントローラーとして使用しているため、URL に /Home/action を含めたくありません。これはほとんどの場所でうまく機能していますが、このフォームは私をつまずかせているようです

何か案は?

4

1 に答える 1

2

それはコントローラー名ではありません。次のようにします。

Html.BeginForm("Index", "Home", FormMethod.Post, new {something="demo"})

ルートが正しく設定されていて、Home/Index がデフォルトのルート ルートである場合、レンダリングすると「/」にレンダリングされます。MVC はルートを自動的に最適化し、デフォルトの最小値 (唯一の「/」) を表示します。

「/」が表示されない場合は、URL を正しく逆生成できないため、ルートを確認してください (おそらく複数のルートが一致する可能性があります)。

Home/SomethingElse を使用していて、それがデフォルト ルートではない場合、投稿するコントローラー/アクションを指定する必要があるため、何をしようとしているのかよくわかりません。

お勧めしませんが、次のこともできるはずです。

Html.BeginForm(null, null, FormMethod.Post, new {action="/", something="demo"})

ただし、これはハックだと思います。実際のルートの問題を修正することをお勧めします。

于 2013-03-24T10:32:57.393 に答える