コントローラのアクションから、同じ方法で呼び出しを行います。
<%= Html.DropDownList(ddl, ViewData["items"] as SelectList, new { onchange = string.format("doSomething({0}); return false;", action) }) %>
これを行ったら、メソッドを呼び出すJavascript関数をページに配置します。ただし、どのように呼び出すかは、AJAX呼び出しであるかどうかによって異なります。つまり、ページを往復するかどうかです。非AJAX呼び出しの場合:
function doSomething(action) {
window.location.href = action;
}
AJAX呼び出しの場合:
function doSomething(action) {
$.load(action);
}
アクションにパラメーターを渡すには、渡すデータ要素がすべて<form>
タグ内に含まれていることを確認する必要があります。たとえば、ドロップダウンリストに名前と名前を含めたいとします。ビューでは、次のようなことを行います。
<%= using (Html.BeginForm())
{ %>
<table>
<tr>
<td>First Name:</td>
<td><%= Html.TextBox("FirstName") %></td>
</tr>
<tr>
<td>Last Name:</td>
<td><%= Html.TextBox("LastName") %></td>
</tr>
<tr>
<td>Assign to:</td>
<td><%= Html.DropDownList(ddl, ViewData["items"] as SelectList,
new { onchange = string.format("doSomething({0}); return false;", ViewData["action"]) }) %></td>
<tr>
</table>
<% } %>
Javascript関数の場合:
function doSomething(action) {
var firstName = $('#FirstName').val();
var lastName = $('#LastName').val();
$.load(action, { first: firstName, last: lastName });
}