2012-04-12 9 views
3

Ich habe mvc3 Web-Anwendung. Darin habe ich EF verwendet und zwei Dropdown-Listen aus der Datenbank bevölkern.Übergeben DropDown ausgewählten Wert aus Sicht zu Controller in MVC3?

Wenn ich jetzt Werte aus diesen Dropdown-Listen auswähle, muss ich sie innerhalb von webgrid zeigen wie kann ich das tun?

@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> 
} 

wenn ich klickte auf Mapping Taste wird es auf neue Seite geht Mapping.cshtml genannt und WebGrid mit diesen beiden Werten zeigen müssen.

Antwort

3

erforderlich würde ich eine Ansichtsmodell

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; } 

}

und in meiner Get Action-Methode, werde ich dieses Ansichtsmodell meiner stark typisierte Ansicht zurückzukehren

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); 
} 

und meine Ansicht nach der stark typisiert ist,

@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" /> 

} 

und jetzt in meiner Httppost Aktion Methode, werde ich dieses Ansichtsmodell als Parameter akzeptieren, und ich werde den ausgewählten Wert gibt

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

Schöner @Shyju hat. Wie können wir den AutoMapper in GetThat verwenden, um das Domänenmodell mit dem View-Modell zuzuordnen? –

0

Geben Sie das Formular an mapping actionresult. im Feld actionresult mapping receive in Parametern wie mapping(string ID, string ddID). Nehmen Sie diese Werte zur Ansicht mit ViewData. Ein besserer Ansatz wird es sein, ein Ansichtsmodell für Grid-Ansicht zu machen und Ihre Mapping-Ansicht stark typisierte herzustellen und zu verwenden Wert auf Raster, wie Sie