MVC 4 DropdownList ausgewählt Wert und übergeben den Wert an die Steuerung durch den ActionLink
Ich habe eine Ansicht mit der folgenden.
@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>
}
In meinem controller habe ich
namespace Planung.Controller
{
public class ReportController : Controller
{
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 });
}
}
}
Meiner Ansicht Modell ist wie folgt
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();
}
}
Update ok ich bin jetzt mit einem view-Modell. Ich kann alle editFor Felder zu füllen, aber die dropdownFor selectedValue ist immer null, wenn es um den controller?
Du musst angemeldet sein, um einen Kommentar abzugeben.
um einen ausgewählten Wert in einen action-link, den Sie brauchen, um jquery verwenden. also aus Ihrer Sicht ändern
zu
und dann in deinem javascript -
wird sich das ändern der href des Links anhand des ausgewählten Elements in der dropdown-Liste. Lassen Sie mich wissen, wenn Sie irgendwelche Fragen haben.
Ok es herausgefunden. Was ich Tat, war in meinem controller habe ich aufgefüllt, der dropdownlist. in meinem viewModel ich habe alle Eigenschaften, die ich brauchen, um passieren, um die nächste Ansicht.
Dies ist mein controller-code
Dies ist mein ViewModel
Dies ist meiner Ansicht