在C#后面的代码上激活javascript字符串onload

时间:2017-06-01 03:33:35

标签: javascript c# css extjs ext.net

美好的一天!

我需要帮助通过on-load后面的代码来激活我的javascript函数。

这是我的代码:

string script = @"var applyCss = function () {
var css = '#CalendarPanel1-month-day-20170607, #CalendarPanel1-month-day-20170614 {background-color: #D0D3D4;}';

        Ext.net.ResourceMgr.registerCssClass('someCssClassId', css);
        }; ";

ScriptManager.RegisterClientScriptBlock(this, typeof(Page), "css", script, true);

顺便说一句,上面的代码通过按钮点击在前端工作。

但我想要的结果是,我希望我的javascript函数能够在页面加载时工作而无需单击按钮。我把我的javascript函数放在代码隐藏中,因为我会将动态日期放在css变量中。上面的代码仍然有静态变量。 (CalendarPanel1 - 月 - 日 - 20170607)

很乐意接受任何回应/解决方案。非常感谢!

2 个答案:

答案 0 :(得分:2)

您可以使用立即调用的函数来执行此操作。基本上你没有为你的javascript函数命名,你在定义后立即调用它。

例如:

var script = @"(function () {alert('Hello');})(); ";
ScriptManager.RegisterStartupScript(this, typeof(Page), "123", script, true);

您需要将函数的主体包含在括号之间,然后使用另一组括号来调用函数。

您也可以将参数传递给您的函数(我假设它是您想要的):

var myAlertText = "Hello Hello";
var script = @"(function (myText) {alert(myText);})('" + myAlertText  + "');" ;

如果我是你,虽然我会在客户端代码中定义该函数,并使用正确的参数从代码后面调用它。

答案 1 :(得分:0)

从后面的代码调用javascript代码的另一种更有趣的方法是使用X.Call()。看看这个例子:

<%@ Page Language="C#" %>

<!DOCTYPE html>
<script runat="server">
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!X.IsAjaxRequest)
        {
            string script = @"var myJSSideVar = 'my var value';
    var applyCss = function (paramOne, paramTwo) {
    var css = '#CalendarPanel1-month-day-20170607, #CalendarPanel1-month-day-20170614 {background-color: #D0D3D4;}';
    Ext.net.ResourceMgr.registerCssClass('someCssClassId', css);
    Ext.Msg.alert('applyCss called.', 'I\'ve been run with parameters: (' + paramOne + ', ' + paramTwo + ').');
};";

            var hi = "hello";

            X.AddScript(script);
            X.Call("applyCss", new object[] { hi, new JRawValue("myJSSideVar") });
        }
    }
</script>

<html>
<head runat="server">
    <title></title>
</head>
<body>
    <form runat="server" id="form1">
    <div>
        <ext:ResourceManager runat="server" />
    </div>
    </form>
</body>
</html>

注意发送给脚本调用的第二个参数是&#34; raw&#34;,即它调用:applyCss("hello", myJSSideVar)

如果您只需通过一个参数,则无需传递数组,例如: X.Call("applyCss", hi);