2015-11-25 2 views
0

В ASP.NET MVC 5 Пожалуйста, помогите мне с тем, как я определяю значение, которое было выбрано из списка выбора (реализовано как @ Html.DropDownListFor) в представлении, поэтому я могу передать его обратно в метод контроллера в чтобы выбрать модифицированный список данных, пожалуйста? Я потратил несколько дней на просмотр и попытку безрезультатно: Вот что у меня есть. У меня есть родительская Модель:В ASP.NET MVC5 как получить выбранное значение, выбранное пользователем в представлении из DropDownListFor, и передать его в действие контроллера?

public class ParentEndorsementViewModel 
{ 
    // Child Models: 
    public List<VW_CMA_PRODUCT_ENDORSEMENT> VW_CMA_PRODUCT_ENDORSEMENTS { get; set; } 

    // This property will hold all available Products for selection: 
    public IEnumerable<SelectListItem> Product_DropDownList { get; set; } 

} 

И соответствующая модель «ребенок»:

public class Product_DropDownList 
{ 
    private Product_DropDownList(int id, string name) 
    { 
     Id = id; 
     Name = name; 
    } 

    public int Id { get; set; } 
    public string Name { get; set; } 
} 

The View есть:

@model App_Endorsement.Models.ParentEndorsementViewModel 
…. 
    @using (Html.BeginForm("Manage_Endorsement", "Endorsement", new { ParentEndorsementViewModel = @Model }, FormMethod.Post, null)) 
{ 
    @*@Html.AntiForgeryToken()*@ 
    @Html.DropDownListFor(m => m.Product_DropDownList, new SelectList(Model.Product_DropDownList, "Value", "Text", Model.Product_DropDownList), "Show All Products") 
    <input type = "submit" value = "Send" /> 
} 

Метод контроллер начинается:

[HttpPost] 
    //[ValidateAntiForgeryToken] 
    public IActionResult Manage_Endorsement(ParentEndorsementViewModel In_ParentEndorsementViewModel) 
    { 
     var ParentEndorsementViewModel = In_ParentEndorsementViewModel; 

Как я уже сказал, я хочу получить выбор ed Значение, выбранное пользователем из Product_DropDownList, но когда модель (ParentEndorsementViewModel) поступает в контроллер, она пуста.

ответ

1

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

например. в модели представления

public class ParentEndorsementViewModel 
{ 
    // Child Models: 
    public List<VW_CMA_PRODUCT_ENDORSEMENT> VW_CMA_PRODUCT_ENDORSEMENTS { get; set; } 

    // This property will hold all available Products for selection: 
    public IEnumerable<SelectListItem> Product_DropDownList { get; set; } 

    // NEW PROPERTY 
    public int SelectedProductId { get; set; } 
} 

По мнению:

@model App_Endorsement.Models.ParentEndorsementViewModel 

@using (Html.BeginForm("Manage_Endorsement", "Endorsement", new { ParentEndorsementViewModel = @Model }, FormMethod.Post, null)) 
{ 
    @*@Html.AntiForgeryToken()*@ 

    @* CHANGE THE TARGET PROPERTY HERE *@ 
    @Html.DropDownListFor(m => m.SelectedProductId, new SelectList(Model.Product_DropDownList, "Value", "Text", Model.Product_DropDownList), "Show All Products") 
    <input type = "submit" value = "Send" /> 
} 

В контроллере:

[HttpPost] 
//[ValidateAntiForgeryToken] 
public IActionResult Manage_Endorsement(ParentEndorsementViewModel In_ParentEndorsementViewModel) 
{ 
    var ParentEndorsementViewModel = In_ParentEndorsementViewModel; 
    var selectedProductId = ParentEndorsementViewModel.SelectedProductId; 
+0

Самая отличная помощь: спасибо !!!! Я нахожусь на крутой кривой обучения с ASP.NET, MVC, Entity Framework, LINQ и т. П., И у меня возникло множество проблем, но у меня была проблема. Cheers .... –

2

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

Например ваша модель:

public class ParentEndorsementViewModel 
{ 
    public int SelectedId { get; set; } 
    public List<SelectListItem> ProductList { get; set; } 

    public ParentEndorsementViewModel() { 
     // Do this just in case you forget to instantiate the list in your first call to the view. 
     ProductList = New List<SelectListItem>(); 
    } 
} 

На ваш взгляд:

@Html.DropDownListFor(x => x.SelectedId, Model.ProductList) 

Когда пользователь отправляет эти данные обратно к контроллеру с помощью формы POST, например, модель связующего вещества должны вступать в брак до модели представления. Значение, выбранное вашим пользователем, содержится в переменной SelectedId.

[HttpPost] 
public ActionResult MyPostBack (ParentEndorsementViewModel model) { 
    var myselectedid = model.SelectedId; 
    //Do whatever 
} 
+0

Спасибо - пятно на! –

Смежные вопросы