MVC 4 DropdownList sélectionné la valeur et passer la valeur à l'automate via le ActionLink
J'ai une vue à la suivante.
@model Scheduling.ViewModel.ReportsViewModel
@Styles.Render("~/Content/themes/base/minified/jquery-ui.min.css")
@Scripts.Render("~/Scripts/Reports.js")
@{
ViewBag.Title = "Index";
}
<br />
<br />
<br />
<br />
<br />
<br />
<br />
@using (Html.BeginForm("ViewReport","Report", FormMethod.Post)) {
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<fieldset>
<legend>Reports</legend>
<div class="editor-field">
@Html.DropDownListFor(model => model.SelectedReport, Model.ReportList, new { id = "ui_ddlReportsList", style = "width: 25%;" })
</div>
<div id ="ui_div_BroadcastReportFilters">
@Html.Label("Start Date:")
@Html.EditorFor(model => model.StartDate, new{id = "ui_txt_StartDate" })
</div>
<p>
<input id="ui_btn_RunReport" type="submit" value="Run Report" />
</p>
</fieldset>
}
Dans mon contrôleur, j'ai
espace de noms de la Planification.Les contrôleurs de
{
public class ReportController : Contrôleur de
{
private SchedulingEntities db = new SchedulingEntities();
//
//GET: /Report/
public ActionResult Index()
{
var reportViewModel = new ReportsViewModel();
return View("Index", reportViewModel);
}
///<summary>
///Start method
///</summary>
///<returns></returns>
public ActionResult Start()
{
return Index();
}
public ActionResult ViewReport(ReportsViewModel reportsViewModel)
{
//ViewData["ArReport"] =
Reports.ReportList report = 0;
//if (Enum.IsDefined(typeof(Reports.ReportList), reportsViewModel.SelectedReport.pkReportID))
//{
// report = ((Reports.ReportList)reportsViewModel.ReportID);
//}
var arReport = GenerateReport.RunReport(report);
ViewBag.ArReport = arReport;
return View("ViewReport"); //, new ReportDescriptor { Id = id, Type = reporttype });
}
}
}
Mon point de Vue, le Modèle se présente comme suit
public class ReportsViewModel
{
private SchedulingEntities db = new SchedulingEntities();
public Reports SelectedReport { get; set; }
public SelectList ReportList { get; set; }
public string StartDate { get; set; }
public string EndDate { get; set; }
public ReportsViewModel()
{
PopulateReports();
}
public void PopulateReports()
{
var reports = db.Reports.Where(r => r.IsActive).OrderBy(r => r.ReportOrder).ToList();
if (reports.Any())
{
SelectedReport = reports[0];
}
ReportList = new SelectList(reports,"pkReportID","ReportName", SelectedReport);//db.Reports.Where(r => r.IsActive).OrderBy(r => r.ReportOrder).ToList();
}
}
Mise à jour ok, je suis maintenant à l'aide d'un modèle de vue. Je peux obtenir tous les editFor Champs à remplir, mais le dropdownFor selectedValue est toujours nulle quand il arrive à la manette?
Vous devez vous connecter pour publier un commentaire.
d'inclure une valeur sélectionnée dans une action de lien, il faut utiliser jquery. donc, dans votre changement de vue
à
et puis dans votre javascript
cela va changer le href du lien en fonction de l'élément sélectionné dans la liste déroulante. Laissez-moi savoir si vous avez des questions.
Ok compris. Ce que j'ai fait dans mon contrôleur que j'ai remplie la dropdownlist. dans mon viewModel j'ai toutes les propriétés j'ai besoin de passer à la vue suivante.
C'est mon contrôleur de code
C'est mon ViewModel
C'est mon point de vue