2015-12-17 3 views
5
  1. Здравствуйте, я очень новый к MVC5, Razor, и EF, и я искал в течение двух дней и до сих пор не могу понять решение к моей проблеме.
  2. Что я хочу сделать, это посмотреть, где пользователи вводят год, квартал и деление. На submit я хочу, чтобы контроллер для другого представления видел эти параметры и отфильтровывал данные перед визуализацией представления. В настоящее время у меня есть 5 разных разделов, и я хочу отфильтровать только одно подразделение при визуализации представления.
  3. Я просмотрел множество форумов, веб-сайтов и т. Д., Пытаясь понять это, и мне не повезло. Я был бы рад, по крайней мере, указать в правильном направлении. Я пытаюсь научиться этому, прыгая в огонь и выясняя его, но мне нужна помощь сейчас.
  4. У меня есть идея о том, как работает MVC, у меня нет проблем с работой с БД, и мне удалось узнать, как работают строительные леса, а также ViewModels. Теперь я пытаюсь научиться манипулировать данными в контроллере и представлениях. Любая помощь будет оценена по достоинству.
  5. Просмотр 1 - Только для ввода параметровФильтрация данных в контроллере, прежде чем она восстановлена ​​в

    <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. контроллер для View 2

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

Я не знаю, что и как начать здесь. Спасибо за вашу помощь!!

EDIT с использованием системы; с использованием 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

Это помогло бы увидеть код вашей модели. Не могли бы вы добавить это? – ScoobyDrew18

+0

Вы можете найти это сообщение полезным [Фильтр/Поиск с использованием нескольких полей - ASP.NET MVC] (http://stackoverflow.com/a/33154580/3110834) –

+0

Да, я видел этот метод, но я хотел бы отфильтровать представление перед тем, как он будет обработан, не отфильтровывая его после загрузки страницы. Спасибо за предложение! –

ответ

5

Чтобы сохранить вещь просто вы можете просто добавить int? Year, int? Qtr, string Div параметры вашего Index действия и искать их с помощью:

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()); 
} 

Примечание:

Также вы можете отделить проблемы и создать JobRecapSearchModel содержащий эти параметры поиска и использовать его в качестве параметра действия, а также создать класс JobRecapBusinessLogic, содержащий List<JobRecap> Search(JobRecapSearchModel searchMode) метод, который я использовал выше. Таким образом, у вас будет более гибкий и красивый контроллер.

Чтобы узнать больше о том, как использовать такой метод и преимущества вы посмотрите на этот вопрос может:

+2

Не то, чтобы это технически важно, но «AsQueryable» не нужно. 'db.JobRecaps' возвращает' IQueryable'. –

+0

Спасибо, Реза .... потребовалось немного, чтобы понять это, но я вижу, что ты говоришь. Я очень новичок в этом! –

+0

Добро пожаловать @DavidWilliams :) –

Смежные вопросы