Из действия контроллера вы совершите вызов таким же образом:
<%= 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 });
}