Передать значение выпадающего списка в контроллер - PullRequest
0 голосов
/ 26 ноября 2018

У меня выпадающий список, и я хочу передать значение в Controller.Вид

@using (Html.BeginForm())
{  
    @Html.DropDownList("dropOrg", ViewBag.dropOrg as SelectList)
    <input type="submit" value="save" />
}

Контроллер

foreach (int tmp in org)
{
   string s = tmp + " - " + orgNames[tmp];
   SelectListItem item1 = new SelectListItem() { Text = s, Value = tmp.ToString() };
   items.Add(item1);
}
ViewBag.dropOrg = items;

Что мне делать?

1 Ответ

0 голосов
/ 26 ноября 2018

Будет лучше, если вы создадите ViewModel для своего View:

public class SampleViewModel
{
    public string DropDownListValue { get; set; }
}

, тогда в методе get вашего контроллера:

public ActionResult SomeAction()
{
    var org = GetOrg(); //your org
    var orgNames = GetOrgNames(); //your orgNames

    // . . .

    ViewBag.DropDownListValue = new SelectList(org.Select(s => 
    new SampleViewModel 
    {  
        DropDownListValue = $"{s} - {orgNames[s]}"
    }, "DropDownListValue", "DropDownListValue");
    return View(new SampleViewModel())
}

your SomeAction View:

@model YourAppNamespace.SampleViewModel
<h1>Hello Stranger</h1>

@using (Html.BeginForm())
{
    @Html.DropDownList("DropDownListValue")
    <input type="submit" value="Submit"/>
}

Обратите внимание, что:

Помощник DropDownList, используемый для создания списка выбора HTML, требует IEnumerable<SelectListItem>, явно или неявно.То есть вы можете явно передать IEnumerable<SelectListItem> помощнику DropDownList или добавить IEnumerable<SelectListItem> к ViewBag, используя то же имя для SelectListItem, что и для свойства модели.

Мы использовали здесь неявную передачу, то есть мы использовали одно и то же имя для SelectListItem и ViewBag (то есть DropDownListValue).

Затем, когда вы нажмете Submit, вам нужно *Метод 1032 * для SomeAction:

[HttpPost]
public ActionResult SomeAction(SampleViewModel model)
{
    var org = GetOrg(); //your org
    var orgNames = GetOrgNames(); //your orgNames

    //. . . Validation etc..

    ViewBag.DropDownListValue = new SelectList(org.Select(s => 
    new SampleViewModel 
    {  
        DropDownListValue = $"{s} - {orgNames[s]}"
    }, "DropDownListValue", "DropDownListValue", model.DropDownListValue);


    var doSomething = model.DropDownListValue; //Your selected value from DropDownList
    return View(model)
}

Ссылки: Пример DotNetFiddle , Использование помощника DropDownList с ASP.NET MVC

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