Как получить выбранное значение выпадающего списка в asp.net mvc3?
Это мой код. Отображение данных из базы данных в DropDownList на asp.net MVC3. Теперь я могу отображать данные из базы данных в раскрывающемся списке, но теперь я хочу, чтобы, если я выбрал какую-либо вещь из данных раскрывающегося списка, я хотел, чтобы выбранное значение передавалось в моей хранимой процедуре., Я знаю, что такой же вопрос может быть доступен или уже задан, но я не получаю ответ, который хочу. Если кто-то может объяснить мне шаг за шагом или предоставить мне несколько полезных ссылок.
3 ответа
Этот код не полностью протестирован и реализован.
Вы можете достичь этого, используя onchange
событие dropdownlist
,
@Html.DropDownListFor(x => x.SelectedItemValue,new {@onchange="passvalue(this);"})
Обрабатывать это с помощью JavaScript и AJAX
<script type="text/javascript">
function passvalue(e){
$.ajax({
type: 'POST',
dataType: 'json',
url: '@Url.Action("Index", "Home")',
data: ({ selectedValue: e.innerHTML }),
success: function (result) {
},
error: function (result) {
alert('error');
}
});
}
</script>
Теперь вы можете получить выбранное значение в контроллер
[HttpPost]
public ActionResult Index(int selectedValue)
{
// do whatever you want with `selectedValue`
}
Надеюсь, поможет
Есть несколько подходов. Одним из самых простых является наличие ViewModel с коллекцией SelectListItems для отображения в раскрывающемся меню и элемента для выбора. В приведенном ниже примере кода, конечно, я использую жестко закодированные значения и т. Д. Для демонстрации сути!
ViewModel
public class TestViewModel
{
public IEnumerable<SelectListItem> TestListItems
{
get
{
return new List<SelectListItem>
{
new SelectListItem { Text = "Item 1", Value = "1" },
new SelectListItem { Text = "Item 1", Value = "1" },
new SelectListItem { Text = "Item 1", Value = "1" },
};
}
}
public string SelectedItemValue { get; set; }
}
Посмотреть
<p>@Html.DropDownListFor(x => x.SelectedItemValue, new SelectList(Model.TestListItems, "Value", "Text"))</p>
контроллер
public ActionResult Index()
{
var viewModel = new TestViewModel();
return View(viewModel);
}
[HttpPost]
public ActionResult Index(TestViewModel viewModel)
{
string youChose = viewModel.SelectedItemValue;
// ...
}
Кроме того, чтобы выделить коллекцию не должно быть SelectListItem
и может быть другого типа. Тогда все, что вам нужно сделать, это изменить свое мнение, чтобы выполнить .Select
превратить в SelectListItem
, Для простоты я просто заставил ViewModel использовать его напрямую.