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?

InformationsquelleAutor Spafa9 | 2014-01-06
Schreibe einen Kommentar