2015-12-17 13 views
5
  1. Witam, jestem bardzo nowy do MVC5, brzytwa i EF i czekałem na dwa dni i wciąż nie mogę wymyślić rozwiązanie do mojego problemu.
  2. Co chcę zrobić, to mieć widok, w którym użytkownicy wprowadzają rok, kwartał i podział. Po przesłaniu chcę, aby kontroler dla innego widoku widział te parametry i filtrował dane przed renderowaniem widoku. Obecnie mam 5 różnych podziałów i chcę filtrować tylko jeden podział, gdy widok jest renderowany.
  3. Przeglądałem wiele forów, stron internetowych itp. Próbując to zrozumieć i nie miałem szczęścia. Byłbym zadowolony, gdyby przynajmniej wskazano mi właściwy kierunek. Próbuję się tego nauczyć, wskakując w ogień i zastanawiając się sam, ale potrzebuję teraz pomocy.
  4. Mam cały pomysł za tym, jak działa MVC, nie mam problemów z pracą z DB, i udało mi się dowiedzieć, jak działa rusztowanie, a także ViewModels. Próbuję teraz nauczyć się manipulować danymi w kontrolerze i widokach. Każda pomoc będzie doceniona.
  5. Zobacz 1 - Wystarczy wpisać parametryFiltrowanie danych w kontrolerze zanim zostanie wygenerowana w widoku

    <p> Enter Year: @Html.TextBox("Year")</p> 
    <p> Enter Quarter: @Html.TextBox("Qtr")</p> 
    <p> Enter Division: @Html.TextBox("Div")</p> 
    <p><input id="Submit" type="button" value="button" /></p> 
    
  6. kontroler dla View 2

    namespace BSIntranet.Controllers 
    { 
        public class DivisionIncomeController : Controller 
        { 
         private ProjectionsEntities db = new ProjectionsEntities(); 
    
         // GET: DivisionIncome 
         public ActionResult Index() 
         { 
          return View(db.JobRecaps.ToList()); 
         } 
        } 
    } 
    

nie wiem co i jak zacząć tutaj. Dzięki za pomoc!!

EDYTOWANIE przy użyciu systemu; przy użyciu System.Collections.Generic;

public partial class JobRecap 
{ 
    public int ID { get; set; } 
    public string Job_ID { get; set; } 
    public int Year { get; set; } 
    public int Qtr { get; set; } 
    public string Div { get; set; } 
    public string PreparedBy { get; set; } 
    public string ReviewedBy { get; set; } 
    public Nullable<System.DateTime> Date { get; set; } 
    public Nullable<System.DateTime> ProjStart { get; set; } 
    public Nullable<System.DateTime> ProjComp { get; set; } 
    public string SvgsSplit { get; set; } 
    public Nullable<int> OwnerSplit { get; set; } 
    public Nullable<int> BSSplit { get; set; } 
    public string JointVent { get; set; } 
    public Nullable<int> BSPct { get; set; } 
    public string ContractType { get; set; } 
    public string ContractWritten { get; set; } 
    public Nullable<decimal> CurContrAmt { get; set; } 
    public string FeeBasis { get; set; } 
    public Nullable<decimal> EstTotFeePct { get; set; } 
    public Nullable<decimal> EstTotFeeAmt { get; set; } 
    public string PreconFeeBasis { get; set; } 
} 
+0

To pomogłoby zobaczyć kod modelu. Czy możesz to dodać? – ScoobyDrew18

+0

Ten post może być pomocny [Filtr/Szukaj przy użyciu wielu pól - ASP.NET MVC] (http://stackoverflow.com/a/33154580/3110834) –

+0

Tak Widziałem tę metodę, ale chciałbym przefiltrować widok przed renderowaniem, a nie filtrowaniem po załadowaniu strony. Dziękuję za sugestię !! –

Odpowiedz

5

Aby zachować rzeczy proste, wystarczy dodać int? Year, int? Qtr, string Div parametry do działania Index i szukać ich używania:

public ActionResult Index(int? Year, int? Qtr, string Div) 
{ 
    var data= db.JobRecaps.AsQueryable(); 
    if(Year.HasValue) 
     data= data.Where(x=>x.Year == Year); 
    if(Qtr.HasValue) 
     data= data.Where(x=>x.Qtr == Qtr); 
    if(!string.IsNullOrEmpty(Div)) 
     data= data.Where(x=>x.Div == Div); 

    return View(data.ToList()); 
} 

Uwaga:

Ponadto można oddzielić obawy i stworzyć JobRecapSearchModel zawierające te parametry wyszukiwania i używać go jako parametru działania, a także utworzyć klasę JobRecapBusinessLogic zawierającą List<JobRecap> Search(JobRecapSearchModel searchMode) metoda z firmą, której użyłem powyżej. W ten sposób będziesz miał bardziej elastycznego i pięknego kontrolera.

Aby dowiedzieć się więcej o tym, jak korzystać z takiej metody oraz korzyści można spojrzeć na to pytanie:

+2

Nie jest to technicznie ważne, ale "AsQueryable" jest niepotrzebne. 'db.JobRecaps' zwraca' IQueryable'. –

+0

Dziękuję Reza ... trochę zajęło, aby to rozgryźć, ale widzę, co mówisz. Jestem na to nowy! –

+0

Serdecznie zapraszamy @DavidWilliams :) –