passing dropdown's selected value from view to controller in mvc3?

asp.net-mvc, asp.net-mvc-2, asp.net-mvc-3

Solution

I would create a ViewModel

public class YourClassViewModel
{

 public IEnumerable<SelectListItem> Securities{ get; set; }
 public int SelectedSecurityId { get; set; }

 public IEnumerable<SelectListItem> CUSIPs{ get; set; }
 public int SelectedCUSIPId { get; set; }

}

and in my Get Action method, I will return this ViewModel to my strongly typed View

public ActionResult GetThat()
{
   YourClassViewModel objVM=new YourClassViewModel();
   objVm.Securities=GetAllSecurities() // Get all securities from your data layer 
   objVm.CUSIPs=GetAllCUSIPs() // Get all CUSIPsfrom your data layer    
   return View(objVm);  
}

And In my View Which is strongly typed,

@model YourClassViewModel     
@using (Html.BeginForm())
{
    Security :
     @Html.DropDownListFor(x => x.SelectedSecurityId ,new SelectList(Model.Securities, "Value", "Text"),"Select one") <br/>

    CUSP:
     @Html.DropDownListFor(x => x.SelectedCUSIPId ,new SelectList(Model.CUSIPs, "Value", "Text"),"Select one") <br/>

  <input type="submit" value="Save" />

}

and now in my HttpPost Action method, I will accept this ViewModel as the parameter and i will have the Selected value there

[HttpPost]
public ActionResult GetThat(YourClassViewModel objVM)
{
   // You can access like objVM.SelectedSecurityId
   //Save or whatever you do please...   
}

Problem

I have mvc3 web application. In that i have used EF and populate two dropdownlists from database. Now when i select values from those dropdownlists i need to show them inside webgrid how can i do this? ``` @using (Html.BeginForm()) { @Html.ValidationSummary(true) <fieldset> <legend>Mapping</legend> <div class="editor-label"> @Html.Label("Pricing SecurityID") </div> <div class="editor-field"> @Html.DropDownListFor(model => model.ID, new SelectList(Model.ID, "Value", "Text"), "-- Select category --" ) @Html.ValidationMessageFor(model => model.ID) </div> <div class="editor-label"> @Html.Label("CUSIP ID") </div> <div class="editor-field"> @Html.DropDownListFor(model => model.ddlId, new SelectList(Model.ddlId, "Value", "Text"), "-- Select category --" ) @Html.ValidationMessageFor(model => model.ddlId) </div> <p> <input type="submit" value="Mapping" /> </p> </fieldset> } ``` when i clicked on `Mapping` button it will goes to new page called `Mapping.cshtml` and have to show webgrid with those two values.

Original source