Отправка данных из жесткого кода dropdwonlist в контроллер - PullRequest
1 голос
/ 25 марта 2012

Миграция из текстового поля в выпадающий список - необходимо отправить значение из жестко выпадающего списка в контроллер

Код ниже используется в контроллере

var list = new SelectList(new[]
                                      {
                                          new{ID="1",Name="20012"},
                                          new{ID="2",Name="20011"},
                                          new{ID="3",Name="20010"},
                                          new {ID="4",Name="2009"},
                                          new{ID="5",Name="2008"},
                                          new{ID="6",Name="2007"},
                                            new{ID="7",Name="2006"},
                                              new{ID="8",Name="2005"},
                                                new{ID="9",Name="2004"},
                                                  new{ID="3",Name="2003"},
                                                   new{ID="3",Name="2002"},
                                                    new{ID="3",Name="2001"},
                                                    new{ID="3",Name="2000"},

                                      },
                              "ID", "Name", 1);
        ViewData["list"] = listYear;

Приведенный ниже код используется в представлении

@using (Html.BeginForm()){   
     <p>
  Title: @Html.TextBox("SearchString")  
        @Html.DropDownList("list",ViewData["list"] as SelectList) 
     Genre: @Html.DropDownList("Towns", "All")  
     <input type="submit" value="Filter" /></p>
    }

Ниже приведен код, который использовался для текстового поля

* * 1010

1 Ответ

2 голосов
/ 25 марта 2012

Похоже, вы пытаетесь выбрать значение из списка выбора и отправить это значение в контроллер.Прежде всего, я бы предложил вам использовать ViewModel вместо магических строк.Вы должны изменить свой View, чтобы принять новую ViewModel, а затем опубликовать модель в вашем действии.Это просто, чище и удобнее в обслуживании.

Вот как будет выглядеть ваша модель

public class VehicleYearsViewModel {

    public SelectList VehicleYears { get; set; }
    public int SelectedYear { get; set; }

    public VehicleYearsViewModel() {
        VehicleYears = new SelectList(new[]
                                  {
                                      new{ID="1",Name="2012"},
                                      new{ID="2",Name="2011"},
                                      new{ID="3",Name="2010"},
                                      new{ID="4",Name="2009"},
                                      new{ID="5",Name="2008"},
                                      new{ID="6",Name="2007"},
                                      new{ID="7",Name="2006"},
                                      new{ID="8",Name="2005"},
                                      new{ID="9",Name="2004"},
                                      new{ID="3",Name="2003"},
                                      new{ID="3",Name="2002"},
                                      new{ID="3",Name="2001"},
                                      new{ID="3",Name="2000"}
                                  }
    }
}

Тогда ваш вид будет выглядеть так:

@YourAppName.Models.VehicleYearsViewModel

@using (Html.BeginForm()){
    @Html.ValidationSummary(true)
    @Html.DropDownListFor(model => model.SelectedYear, Model.VehicleYears, "ID", "Name", 1))
    <input type="submit" value="OK" />
}

Ваш контроллерaction примет модель и может использовать выбранное значение в качестве типа данных int.Я просто предполагаю, что ваше действие контроллера не опубликовано, но это выглядит примерно так:

public class HomeController : Controller {

    public ActionResult Index() {
        var model = new VehicleYearsViewModel();
        return View(model);
    }

    [HttpPost]
    public ActionResult Index(VehicleYearsViewModel model) {
        if(ModelState.IsValid) {
            // you can get selected year like so
            int selectedYear = model.SelectedYear;
            // ... your code here to do whatever with selectedYear
        }
        return View(model);
     }   
}

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...