@Html.DropDownList を取得して、それが作成する選択の onChange() イベントで別のアクションに指示する方法を理解しようとしています。アクション名は、選択リストのオプション値に格納されます。これまでに入手したクローゼットは次のとおりです。
意見:
@using (Html.BeginForm("Index", "Home", FormMethod.Get))
{
<h5>Select service to test:</h5>
@Html.DropDownList("ddl", new SelectList(Model.Services, "MvcActionName", "ServiceName"),
new {
onchange = @"
var form = document.forms[0];
var action = $('#ddl').val();
form.action=action;
form.submit();"
})
}
そして、それが発するのはこれです:
<form action="/" method="get"> <h5>Select service to test:</h5>
<select id="ddl" name="ddl" onchange="
var form = document.forms[0];
var action = $("#ddl").val();
form.action=action;
form.submit();"><option value="">Ping Service</option>
<option value="Data">Data Service</option>
</select>
</form>
しかし、これは「localhost/Data」を呼び出そうとするだけで、「localhost/Home/Data」を呼び出す必要があるため失敗します。私は標準の MVC3 ルーティング設定を使用していますが、これまでのところ、BeginForm ヘルパーがより良いフォーム ブロックを発行するように変更することはできませんでした。
繰り返しになりますが、ルーティングが問題なのか、目的の場所にたどり着くのに不十分な道をたどっているのかはわかりません. ヘルプやガイダンスをいただければ幸いです。