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.