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


ASP.NET Webpage - Displaying image/text dictated by predefined date and time using scripts

我的目标是仅在预定义的日期和时间(周一至周五上午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"answers"hour"。我想出了一个通用算法来指定周一至周五上午9:00至下午5:00,如下所示:

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或缓存会影响此脚本的性能吗?我是否需要解决任何此类问题,例如在代码中指定自动刷新页面?

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

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

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

如果你想在特定的时间把文本放在你的页面上,而不是使用PlaceHolder,你可以使用Literal控件,简单地说:

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

问候,
Shakib