Как получить выбранное значение DropDownList в MVC - PullRequest
0 голосов
/ 05 мая 2018

У меня есть выпадающий список, который я заполнил из базы данных. Теперь мне нужно получить выбранное значение в Контроллере и выполнить некоторые манипуляции. Но не поняла идею.

Модели / UserManageClass.cs

public class UserManageClass
{
    // Set Stored Procedure Results to Array
    public sp_GetAllDeveloperType_Result dv { get; set; }
    public IEnumerable<sp_GetAllDeveloperType_Result> dvi { get; set; }
}

Контроллеры / ResourceController.cs

public static db_RIROEntities db_RIRO = new db_RIROEntities();
public static UserManageClass model = new UserManageClass();

public ActionResult NewUser()
{
  model.dv = db_RIRO.sp_GetAllDeveloperType().FirstOrDefault();
  model.dvi = db_RIRO.sp_GetAllDeveloperType();
}
[HttpPost]
// Insert User
public void AddUser(ResourceViewModel resourceInfo)
{

 }

Просмотры

using (@Html.BeginForm("AddUser", "Resource", FormMethod.Post))
{ 
@model OnlineRIRO.Models.UserManageClass
@* Display DropDownList for Developer Type *@

@Html.DropDownListFor(x => x.dv.DeveloperTypeID, new SelectList(Model.dvi, "DeveloperTypeID", "Developer_Type"), new { @class = "form-control input-sm" })

<div class="col-md-4">
    <div class="form-group col-lg-12">
        <label class="lb-sm">Last Name</label>
        <input type="text" name="txtLastName" placeholder="Last Name" class="form-control input-sm">
    </div>
</div>

<div class="col-md-4">
    <div class="form-group col-lg-12">
        <label class="lb-sm">First Name</label>
        <input type="text" name="txtFirstName" placeholder="First Name" class="form-control input-sm" id="" value="">
    </div>
</div> 
}

Как мне передать выбранное значение из DropDownList в ResourceViewModel?

ResourceViewModel

public class ResourceViewModel
{
    public string FirstName {get; set;}
    public string LastName {get; set;}
}

1 Ответ

0 голосов
/ 05 мая 2018

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

public class ResourceViewModel
{
    public int DeveloperTypeId { set;get;}
    public List<SelectListItem> DeveloperTypes { set;get;}

    public string FirstName {get; set;}
    public string LastName {get; set;}
}

Теперь в вашем действии GET создайте объект этой модели представления, инициализируйте свойство DeveloperTypes collection и отправьте объект в представление.

public ActionResult NewUser()
{
   var vm = new ResourceViewModel();
   vm.DeveloperTypes = db_RIRO.sp_GetAllDeveloperType()
                              .Select(a=> new SelectListItem { 
                                               Value = a.DeveloperTypeID.ToString(), 
                                               Text= a.Developer_Type })
                              .ToList();
   return View(vm);
}
[HttpPost]
public void AddUser(ResourceViewModel model)
{
   //check model.DeveloperTypeId
   // to do : Return something
}

Предположим, db_RIRO.sp_GetAllDeveloperType() возвращает коллекцию объектов со свойством DeveloperTypeID типа int и Developer_Type типа string.

Теперь, по вашему мнению, вы можете использовать DropDownListFor helper

@model ResourceViewModel
@using(Html.BeginForm("AddUser","Resource"))
{
   @Html.LabelFor(a=>a.FirstName)
   @Html.TextBoxFor(a=>a.FirstName)

   @Html.LabelFor(a=>a.LastName)
   @Html.TextBoxFor(a=>a.LastName)

   @Html.LabelFor(a=>a.DeveloperTypeId)
   @Html.DropDownListFor(a=>a.DeveloperTypeId, Model.DeveloperTypes,"Select");

   <button type="submit" class="btn">Submit</button>
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...