Показать текущую дату в метке ASP.NET с C # и JS - PullRequest
3 голосов
/ 24 мая 2011

Я пытаюсь отобразить текущую дату в метке ASP.NET, используя JavaScript и C #.Вот что у меня есть:

C #:

protected void Page_Load(object sender, EventArgs e)
{
    Page.ClientScript.RegisterStartupScript(Type.GetType("System.String"), "addScript", "GetDate()", true);
}

JS:

<script type="text/javascript">
    function GetDate() 
    {
        var dt = new Date();
        var element = document.getElementById("MainContent_FormView1_Label1");

        element.text = dt.toDateString();
    }
</script>

ASP.NET:

<asp:Label ID="Label1" runat="server" Text='<%# Bind("Date", "{0:d}") %>'></asp:Label>

Может кто-нибудь увидеть гдеЯ иду не так?Также можно ли запускать JS, когда страница загружается без использования метода C # Page_Load?Я взял RegisterStartupScript в другом месте , но на самом деле я этого не понимаю.

Спасибо, Лиам

Ответы [ 5 ]

3 голосов
/ 24 мая 2011

Попробуйте использовать element.innerText = dt.toDateString();.

Кроме того, вам не нужно использовать RegisterStartupScript. Вы можете просто вызвать функцию getDate() в событии onLoad.

<script type="text/javascript">

    window.onload = function(){
        getDate();
    };

    function getDate() 
    {
        var dt = new Date();
        var element = document.getElementById("MainContent_FormView1_Label1");

        element.text = dt.toDateString();
    }
</script>

Тем не менее, вы можете прочитать этот поток SO для лучшей практики использования window.onload или рассмотреть возможность использования такой инфраструктуры, как jQuery и document.ready

0 голосов
/ 24 мая 2011

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

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
    <title>jQuery to call page methods in ASP.NET</title>
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.6.1.min.js">  </script>
</head>
<body>
    <form id="Form1" runat="server">
    <asp:ScriptManager EnablePageMethods="true" ID="ScriptManager1" runat="server">
    </asp:ScriptManager>

    <script type="text/javascript">
        $(document).ready(function() {

            setInterval(setTime, 1000);
            function setTime() {
                PageMethods.getTime(function(res) {
                    document.title = res;
                    $('#time').html(res);
                });
            };
        });
    </script>
    Time : <span id='time'></span>
    </form>
</body>
</html>

C #

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Services;
public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {


    }
    [WebMethod]
    public static string getTime()
    {
        return DateTime.Now.ToString("hh:mm:ss tt");
    }

}
0 голосов
/ 24 мая 2011

Вы можете просто установить как

Label1.Text = DateTime.Now.ToString();

РЕДАКТИРОВАТЬ

Если вы не хотите устанавливать DateTime на стороне сервера.Вы можете использовать приведенный ниже код без каких-либо onload или RegisterStartupScript методов

<asp:Label ID="label1" runat="server" />

<!-- At the end of ASPX Page -->

<script type="text/javascript">
document.getElementById("MainContent_FormView1_Label1").innerHTML = new Date().toDateString()
</script>
0 голосов
/ 24 мая 2011

Вы можете изменить свой PageLoad на OnPreInit, а также вы можете изменить свой JS на

<script type="text/javascript">
 function GetDate()
  {
     document.getElementById('<%Label1.ClientID%>').value = new Date().toDateString(); 
 }
 </script>
0 голосов
/ 24 мая 2011

Попробуйте это:

//C#
protected void Page_Load(object sender, EventArgs e)
{
    Page.ClientScript.RegisterStartupScript(this.GetType(), "addScript", "GetDate()", true);
}

//JS
<script type="text/javascript">
    function GetDate() 
    {
        var dt = new Date();
        var element = document.getElementById("<%# Label1.ClientID %>");

        element.innerHTML = dt.toDateString();
    }
</script>

//ASP.Net
<asp:Label ID="Label1" runat="server" Text=''></asp:Label>
...