如何根据差异计算mvc中的日期差异并隐藏/显示Html.Actionlink

时间:2011-07-15 16:28:49

标签: jquery asp.net-mvc asp.net-mvc-2 html.actionlink

我的数据库中有日期字段,我想要做的是找到当前日期和产品创建日期之间的日期差异(以db为单位)。例如,如果产品日期是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 个答案:

答案 0 :(得分:3)

您的观点不应该对计算负责。

通常,您的控制器将从数据库加载模型,并使用该模型填充适当的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 :(得分:1)

Calculating difference in days using C#

在视图中,您可以使用

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

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

<% } %>

模型在View-Source的第一行中定义。在您的模型中,您可以定义一个保持差异的字段。

不要让View计算它。