2016-06-17 15 views
0

У меня есть тэг select с несколькими параметрами, и каждый из опций обозначается значением.Передавать выпадающие значения списка из представления в контроллер

<select id="dropdown"> 
    <option value="1">Option 1</option> 
    <option value="2">Option 2</option> 
    <option value="3">Option 3</option> 
    <option value="4">Option 4</option> 
</select> 

Кроме того, у меня есть следующий сценарий JQuery.

$(function() { 
    $(#dropdown).change(function() { 
     var option = $(this).find("option:selected").text(); 
     var optionValue = $(this).val(); 

Я проверил оба значения, используя «предупреждение», и они верны. Теперь я хочу передать эти значения из представления в контроллер. Я помещал тег select в форму и пытался использовать «.submit()» для обоих значений, но это приводит к сбою сценария. Я не уверен, правильно ли использую «.submit()», поскольку я начинаю работать в JavaScript и JQuery. Короче говоря, как я могу получить значение тега опции в методе моего контроллера?

EDIT 1

Отборные метки в форме, и я пытался представить, как это:

$(this).val().submit() 

EDIT 2

Кроме того, здесь метод контроллера, который я пытаюсь получить.

[HttpPost] 
public ActionResult Index(string dropdown) 
{ 
    string value = dropdown; 

    //--- conditional logic --- 

    return View() 
} 
+0

Не могли бы вы показать код, в котором вы делаете .submit()? – Thargor

+0

используйте 'form' для отправки значения или при использовании jQuery, тогда вы можете использовать' jQuery.ajax() 'для отправки значений контроллеру. – Jai

+1

Вам не нужно выбирать выбранную опцию через Javascript. Если вы добавите имя в элемент select и кнопку отправки в вашу форму, MVC будет следить за ним для вас. Проще всего было бы создать модель, содержащую свойство строки с тем же именем, что и ваш элемент select. Если вы хотите использовать проверку на элементе select, я бы рекомендовал использовать DataAnnotations через модель. – MartijnK

ответ

1

Чтобы использовать submit() ваш выпадающий список должен быть в <form>

<form method="POST" action="yourControllerUrl/MyAction"> 
    <select id="dropdown" name="dropdownName"> 
     <option value="1">Option 1</option> 
     <option value="2">Option 2</option> 
     <option value="3">Option 3</option> 
     <option value="4">Option 4</option> 
    </select> 
</form> 

И в контроллере:

public ActionResult MyAction(string dropdownName) 
{   
     // use your dropdown value here 
} 
+0

так, нужна ли кнопка отправки, или это будет сделано автоматически? – Jai

+0

, если вы вызываете 'submit()' явно, вам не нужна кнопка отправки –

+0

У меня есть она в форме (@using (Html.BeginForm («Действие», «Контроллер», FormMethod.Post) {...}). – ThanksInAdvance

0

Вы можете использовать Ajax, чтобы сделать этот вид задачи

var dropDownVal = $("#dropdown").val(); 
$(#dropdown).change(function() { 

    $.ajax({ 
     url : yourControllerUrl/MyAction, 
     type: "POST", 
     data : { 
      dropDown : dropDownVal 
     } 
    }); 

}); 

В контроллере используйте параметры и получите значение с помощью «dropDown» в качестве ключа

0

Лучшим способом было бы расширить это .... :) надеюсь, что это поможет.

Модель

public class Model 
{ 
    public int Id { get; set; } 
    public IEnumerable<Items> items { get; set; } 
} 

Посмотреть

@model App.Models.Model 

@using (Html.BeginForm("ActionName", "ControllerName")) { 

    @Html.DropDownListFor(x => x.Id, Model.Items) 

    <button type="submit" class="btn btn-info"><i class="fa fa-floppy-o"></i></button> 
} 

Контроллер

public ActionResult ActionName(Model model) 
{ 
    var blah = model.items; 

    return View(model); 
}