Что таблице вы говорите? ASP.NET MVC не знает таблиц или стульев. Он работает с моделями, контроллерами и представлениями.
Итак, у вас есть представление, в котором вы отобразили поле <select>
, и вы хотите, чтобы пользователь изменил значение этого окна выбора, чтобы вызвать действие контроллера, передающее вновь выбранное значение серверу, чтобы он мог выполнять некоторые обработка. Я прав?
Вам нужно будет использовать javascript в своем представлении, чтобы подписаться на событие с этим выпадающим списком. Затем у вас есть несколько возможностей:
- Используйте запрос AJAX для отправки выбранного значения на сервер.
- Перенаправить текущего браузера (используя
window.location.href
) в действие контроллера, передав ему выбранное значение в качестве аргумента действия.
В зависимости от ваших требований вы можете выбрать технику, которая наилучшим образом подходит для вас.
Позвольте мне проиллюстрировать первый подход с примером использования JQuery:
<script type="text/javascript">
$(function() {
// subscribe to the .change event of the dropdowns
$('select').change(function() {
// fetch the newly selected value
var selectedValue = $(this).val();
// send it as an AJAX request to some controller action
$.post('@Url.Action("Foo")', { value: selectedValue }, function(result) {
// this will be invoked in the case of success of the AJAX call
// TODO: do something with the results returned by the controller action
});
});
});
</script>
и ваши действия контроллера, который будет обрабатывать запрос AJAX:
[HttpPost]
public ActionResult Foo(string value)
{
// this action will be invoked when the user changes the selection
// in one of the dropdown lists and passed the newly selected value.
// So using this new value you could perform the desired processing
// on your model here and return a view. Since this action was invoked
// with an AJAX call you could return a JSON string to the client indicating
// the success or failure of whatever processing you were intending to perform
// here
...
}
UPDATE:
Если вы хотите отправить форму, содержащую выпадающие списки при изменении выбора, вы можете используйте следующее:
<script type="text/javascript">
$(function() {
// subscribe to the .change event of the dropdowns
$('select').change(function() {
// trigger the submission of the containing form:
$(this).closest('form').submit();
});
});
</script>
Таблица, на которую я ссылался, в значительной степени представляет собой всю форму. Все opf мои данные присутствуют в таблице, включая раскрывающийся список. Я хочу обновить, какие члены моей модели показывают на основе выбора. например, если моя модель была машиной, и в списке я выбрал красный, только красная информация о автомобилях должна отображаться. Я не думаю, что мне следовало бы перейти к контроллеру, потому что все данные уже доступны для просмотра только для фильтрации. –
@atbyrd, поэтому вы хотите отправить форму, не так ли? В этом случае вы можете подписаться на событие изменения выпадающих списков, как я показал в своем ответе, и вручную инициировать представление содержащейся формы, как это: '$ (this) .closest ('form'). Submit(); '. Я обновлю свой ответ, чтобы включить это. –
Я попытался использовать этот $ ("select"). Change (function() { alert ("hello"); }); Чтобы подписаться на событие изменения, но ничего не происходит. –