Как рассчитать разницу дат в mvc и скрыть / показать Html.Actionlink по разнице - PullRequest
0 голосов
/ 15 июля 2011

У меня есть поле даты в моей базе данных. Я хочу найти разницу дат между текущей датой и датой создания продукта (которая находится в базе данных).Например, если дата продукта - 22/08/2012, а текущая дата - 15/07/2011, то есть разница составляет 38 дней, после однократного расчета разницы следует проверить логику и отобразить ссылку действия в соответствии с ней:

Логика является фиксированной и простой:

If(dateDifference > 5 )
{ show Actionfilter } 
else
{
hide Actionfilter}

Фильтр действий в представлении

<p>    <%= Html.ActionLink("Pay by Cheque", "PayByChecque", "Booking", null, new { id = "paycheque", @class ="test"  })%></p>

Любая помощь или предложение будут оценены.

Я думал овыполняя вычисления в контроллере и передавая их через пакет просмотра в jquery, например:

$('#paycheque').hide();
$('Viewbag.difference').value > 5{

$("#showdiv").show();
else
$("#showdiv").hide();

});

Но я борюсь с вычислением разницы

Ответы [ 2 ]

3 голосов
/ 15 июля 2011

Ваше представление не должно отвечать за выполнение расчета.

Обычно ваш контроллер загружает модель из базы данных и использует эту модель для заполнения соответствующего объекта ViewModel (как указано выше), который отвечает за "формирование данных в формат, в котором они нужны вашему представлению.

Попробуйте что-то вроде следующего: -

MyViewModel.cs: -

public class MyViewModel
{
  public DateTime FirstDate { get; set; }
  public DateTime SecondDate { get; set; }

  public bool SheIsIntoYou
  {
    return SecondDate.Subtract(FirstDate).Days < 5
  }
}

И на ваш взгляд (который строго типизирован на MyViewModel): -

<% if (Model.SheIsIntoYou) { %>
  <%: Html.ActionLink("Ask out again", "MyController", "MyAction") %>
<% } %>
1 голос
/ 15 июля 2011

Расчет разницы в днях с использованием C #

В представлении, которое вы можете использовать

<% if(Model.XXX > 5) { %>

   <!-- display --> 
   <p>
     <%= Html.ActionLink("Pay by Cheque", "PayByChecque", "Booking", null, new { id = "paycheque", @class ="test"  })%>
   </p>

<% } %>

Модель определена в первой строке представления-источника.В вашей модели вы определяете поле, которое содержит разницу.

Не позволяйте представлению вычислять его.

...