ASP.NET网页 - 使用脚本显示由预定义日期和时间决定的图像/文本

时间:2013-11-18 22:53:48

标签: c# javascript php asp.net datetime

我的目标是仅在预定义的日期和时间(周一至周五,上午9:00至下午5:00)在ASP.NET网页上显示字符串或图像。请记住,我将依赖于固定服务器时间,PST。

我不确定是否使用jQuery,JavaScript,C#或PHP作为脚本。 以下是我迄今为止在JavaScript中提出的内容。我在正确的道路上吗?

<script type="text/javascript" language="javascript">
function GetDateTime()
{
var d = new Date();
var day = d.getDay(); //returns 0-6 corresponding to Sunday through Saturday
var hour = d.getHours(); //returns 0-23 corresponding to hours 
}   
</script>

现在我需要帮助操纵变量'day'和'hour'。我提出了一个通用算法来指定星期一到星期五上午9点到下午5点,如下所示:

if ((day>0 && day<6) && (hour>8 && hour<18) ) //days 1 through 5 (M-F) and (hours 9:00-17:00)
{ alert("testing") 
//This is for testing purposes. I will eventually insert code here to display string or image perhaps? 
}

假设正确获取日期和时间并且if语句算法正确,我如何实现Javascript部分并将“将代码绑定在一起”与我的ASP.NET页面一起显示基于这些参数的字符串或图像?

这是我第一次在Stackoverflow上发帖。我希望我正确地解决这个问题。提前感谢您的帮助。


编辑:我现在放弃了JavaScript。在我看来,C#就像这样做的正确方法。感谢 codingbiz 的共鸣,我能够实现如下所示的脚本:

<script runat="server">

protected void Page_Load(object sender, EventArgs e)
{
    DateTime thisTime = DateTime.Now;           // retrieve date and time
    string day = thisTime.DayOfWeek.ToString(); // declare and define day to string 
    int hour = thisTime.Hour;                   // declare and define hour to int

//check if string contains the following: "Monday,Tuesday,Wednesday,Thursay,Friday"
if ("Monday,Tuesday,Wednesday,Thursay,Friday".IndexOf(day) > -1 && hour >= 9 && hour <= 17)
{
   conditionalLabel.Text = "<img src='sony_frontex3_repair.jpg' />";
}
}
</script>

我还在内容页面和母版页的正文中添加了以下条件标签:     

新问题: 让我们说用户在下午4:45访问我的网站,图像/字符串按预期显示。一段时间过去了,现在是5:05。图像/字符串是自动消失,还是仅在页面关闭后重新打开? Cookie或缓存是否会影响此脚本的性能?我是否需要解决任何此类问题,例如在代码中指定自动刷新页面?

2 个答案:

答案 0 :(得分:0)

您可以在aspx页面中使用隐藏字段。将所需的字符串值从后面的代码加载到隐藏字段中,然后在javascript函数中使用该字段来显示该值。

答案 1 :(得分:0)

使用ASP.NET和C#很容易。您也可以使用JavaScript来完成它,但我不会推荐它,因为您将处理客户的日期和时间。要使用ASP.net显示它,您可以利用名为PlaceHolder的ASP.net控件。您可以轻松地将控件或简单文本甚至HTML标记放在PlaceHolder中。自从我编写ASP.net WebForms以来已经有一段时间了,请原谅我,如果我的代码有任何问题,但它会向您展示一般的想法。放

<asp:PlaceHolder Id="MessageHolder" runat="Server" />

在您的.aspx页面和页面加载事件的C#代码中添加了类似的内容

void Page_Load(...) {
   if (DateTime.Now > StartDate && DateTime.Now < EndDate) {
      MessageHolder.Controls.Add(...);
   }
}

如果您只想在内部添加HTML标记而不是ASP.net控件,则可以使用名为HtmlGenericControl的类生成HTML标记,然后将其添加到PlaceHolder中。

如果您想在特定时间在页面中放置文字而不是使用PlaceHolder,则可以使用Literal控件并简单地说:

LiteralControl.Text = "<p>My special message!</p>";

的问候,
Shakib