2016-05-12 8 views
0

Ich arbeite an unserer neuen Startseite, die einen Filter und eine Liste von Nachrichten-Posts zeigen wird. Jeder Nachrichtenbeitrag und jede Nachrichtenliste kann mit mehreren Geschäftsbereichen versehen werden.Wie bekomme ich Formularwerte zum Controller

Newsliste werden Nachrichten enthalten nach:

  • den Einstellungen der Nachrichtenliste, die von Administratoren geändert werden.
  • dann durch das Filterformular auf der Seite gefiltert.
  • und, wenn der Filter leer ist, aber der Benutzer angemeldet ist, nach den Benutzereinstellungen gefiltert.

Wenn die Ansicht IndexSecond geladen wird, wird der Filter seiner choosable Geschäftsbereich entsprechend seinen newslist. Mein Problem ist, dass ich nicht weiß, wie man die ausgewählten Geschäftsbereiche von der EditorFor erhält, um in der model.filteredBAs zu enden, die an IndexSecondFiltered übergeben wird? Wenn ich in IndexSecondFiltered zu einem Haltepunkt komme, ist model immer Null.

Nach Ansicht IndexSecond

@model Slussen.BLL.Models.PostFilterListModel 
... 
@using (Html.BeginForm("IndexSecondFiltered", "Home", new { model = model })) 
{ 
     @Html.HiddenFor(model => model.filteredBAs) 
     @Html.ValidationSummary(true, "", new { @class = "text-danger" }) 
     <div class="form-group"> 
      <div class="col-sm-2">Business area</div> 
      <div class="col-md-10"> 
       @Html.EditorFor(model => Model.newslistModel.BusinessAreas, 
             new { htmlAttributes = new { @class = "form-control" } }) 
      </div> 
     </div> 

     <div class="form-group"> 
      <div class="col-md-offset-2 col-md-10"> 
       <input type="submit" value="Go" class="btn btn-primary orange" /> 
      </div> 
     </div>     
} 

In Homecontroller

public ActionResult IndexSecond() 
{ 
    //Known user? 
    int? uo = null; 
    if (User.Identity.IsAuthenticated) 
     uo = CurrentUser.UserOrganization.Id; 

    return View(
      _queryDispatcher.Execute<PostFilterListModel>(
       new GetFilteredNewsListById(1, uo, "", 1, 
       new System.Collections.Generic.List<int>(), 
       new System.Collections.Generic.List<int>()))); 
} 

[HttpPost] 
public ActionResult IndexSecondFiltered(PostFilterListModel model) 
{ 
    //Known user? 
    int? uo = null; 
    if (User.Identity.IsAuthenticated) 
     uo = CurrentUser.UserOrganization.Id; 

    return View(
      _queryDispatcher.Execute<PostFilterListModel>(
       new GetFilteredNewsListById(1, uo, "", 1, 
       new System.Collections.Generic.List<int>(), model.filteredBAs))); 
} 
+0

Können Sie zeigen Sie Ihren Code für den 'BusinessAreas' Editor Vorlage? –

Antwort

0

ich Hilfe von einem Kollegen bekommen.

Ich brauchte den [HttpPost] ActionResult IndexSecondFiltered überhaupt nicht.

Als ich diese ersetzt

@using (Html.BeginForm("IndexSecondFiltered", "Home"), new { model = model }) 

mit diesem

@using (Html.BeginForm("IndexSecond", "Home")) 

das Modell an die Steuerung zusammen mit IsSelected-Status übergeben wurde

Verwandte Themen