2014-10-29 4 views
0

Правого, чувствует себя очень Noob вопросы, но все-таки новое для всего этого :)Выбор даты, чтобы передать параметры MVC5

У меня есть класс в библиотеке, которая должна генерировать документ на основе нескольких переменных который должен быть передан из веб-приложения MVC5.

Я посмотрел пару учебных пособий, но я не могу обойти его, так что, возможно, я приближаюсь к этому неправильно?

Это моя модель:

 public class SummaryTicketsReportModel 
     { 
      public bool ServiceDesk { get; set; } 

      [DisplayFormat(DataFormatString = "{0:DD/MM/YYYY", ApplyFormatInEditMode = true)] 
      [DataType(DataType.Date)] 
      [DisplayName("From")] 
      public DateTime StartDate { get; set; } 

      [DisplayFormat(DataFormatString = "{0:DD/MM/YYYY", ApplyFormatInEditMode = true)] 
      [DataType(DataType.Date)] 
      [DisplayName("From")] 
      public DateTime EndDate { get; set; } 


    //Do I need this? 
      //public SummaryTicketsReportModel() 
      //{ 
      // StartDate = new DateTime(); 
      // EndDate = new DateTime(); 
      //} 

Это мой контроллер:

public class SummaryReportController : Controller 
    { 
     // GET: SummaryReport 
     public ActionResult Index() 
     { 

      return View(); 
     } 

     //POST Action 
     [HttpPost] 
     public ActionResult Index(SummaryTicketsReportModel serviceDesk, SummaryTicketsReportModel startDate, SummaryTicketsReportModel endDate) 
     { 
      // takes in the view model 
      var selectedServiceDesk = serviceDesk; 
      var selectedStartDate = startDate; 
      var selectedEndDate = endDate; 
      var generateReport = new TicketSummaryReport(); 
//Needs to access the following: MonthSummaryReport (ServiceDesk, StartDate, EndDate, summaryDocX) 
      //return generateReport.MonthsSummaryReport(); 
     } 
    } 

И это мое мнение:

@using System.Drawing 
@model SummaryTicketsReportModel 

@{ 
    ViewBag.Title = "TicketsSummaryReport"; 
} 


<h2>TicketsSummaryReport</h2> 

@using (Html.BeginForm()) 
{ 
    <tr> 
     <td> 
      @Html.TextBox("", String.Format("{0:d}", Model.StartDate)) 

     </td> 
     <td> 
      @Html.TextBox("", String.Format("{0:d}", Model.EndDate)) 
     </td> 
     <td style="text-align: center"> 
      @Html.CheckBoxFor(model => model.ServiceDesk) 

     </td> 
    </tr> 
    <input type="submit"/> 
} 
+0

Что вы хотите сказать? –

+0

Он отказывается работать: (например, даже не запускается из-за того, что «не все коды возвращают значение» –

+1

Похоже, что вы ничего не возвращаете из своего действия с контроллером, что возвращает ваш метод комментария? Если это «SummaryTicketsReportModel» 'вы, вероятно, хотите что-то вроде' return View (generateReport.MonthsSummaryReport()); ' –

ответ

2

Для того, чтобы MVC модель привязки к работе, идентификаторы элементов формы HTML должны соответствовать именам свойств SummaryTicketsReportModel.

Так что вам нужно будет сделать это:

@Html.TextBox("StartDate", String.Format("{0:d}", Model.StartDate)) 
@Html.TextBox("EndDate", String.Format("{0:d}", Model.EndDate)) 

В качестве альтернативы, чтобы использовать аннотации Богу, что вы применили в вашем SummaryTicketsReportModel:

@Html.TextBoxFor(model => model.StartDate) 
@Html.TextBoxFor(model => model.EndDate) 

В контроллере, попробуйте следующее:

[HttpPost] 
public ActionResult Index(SummaryTicketsReportModel model) 
{ 
    // takes in the view model 
    var selectedServiceDesk = model.ServiceDesk; 
    var selectedStartDate = model.StartDate; 
    var selectedEndDate = model.EndDate; 

    //The rest of your code 

    return View(); 
} 

Я не проверял это так, надеюсь, нет ничего плохого.

+0

Спасибо! Помогло мне немного, но теперь я должен сделать исправление на некоторые другие вещи :) приветствия! –

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