Как получить выбранное значение выпадающего списка в 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 использовать его напрямую.

Это способ достижения этого:

Подпишите событие изменения раскрывающегося списка и вызовите метод действия (например, с ajax), который передает выбранное значение хранимой процедуре.

Другие вопросы по тегам