所以这看起来很有名,但差别不大。
JavaScript功能:
function ShowMessage(Message, Title, isAlarm) {
$("#dtext").html(Message);
$("span.ui-dialog-title").text(Title);
$("#dialog").dialog({
open: function(e) {
var Dia = $(e.target);
if (isAlarm == true) {
Dia.parents(".ui-dialog:first").find(".ui-dialog-titlebar").css("background", "red");
Dia.parents(".ui-dialog:first").find(".ui-dialog-titlebar").css("color", "White");
}
else {
Dia.parents(".ui-dialog:first").find(".ui-dialog-titlebar").css("background", "LightSeaGreen");
Dia.parents(".ui-dialog:first").find(".ui-dialog-titlebar").css("color", "White");
}
},
show: "blind",
hide: "clip",
modal: true,
resizable: false,
buttons: {
"Close": function(e) {
$(this).dialog("close");
return true;
}
}
});
}
如您所见,此方法填充Jquery-Code。如果这只是java脚本,我们可以使用此代码来调用该函数,但在这种情况下,此方法不能正常工作。
C#调用JS方法:
if (!Pointer.ClientScript.IsStartupScriptRegistered("message"))
Pointer.Page.ClientScript.RegisterStartupScript
(Pointer.Master.GetType(), "message", "ShowMessage('messageBox','" + Message + "',false);", true);
我不知道如何解决这个问题。 I Want just call this Js function from server-side?
修改1
感谢您的关注。有些人想要我更好地描述我的问题。为什么我不能?
Cuz I don't know what's exactly problem
。
我可以说,我用FireBug测试这个程序并在JS函数的第一行设置断点,但是在运行时我将Js函数称为断点Hit
几毫秒然后页面重新加载完成,没有任何反应。
我是JS和jQuery的新手。因此,请点击投票PLZ 尝试使用这些代码的示例程序并帮助我。
再次感谢(特别是Stefan,PirateKitten,Widor)
编辑2
我将此Function(JQuery Message Function)
替换为仅使用简单JS警报的 Old Function
。我必须说老版本的工作(即使我从服务器端用JS-Caller函数调用它来编写)。
在这种情况下,即使 I call new Function(JQ Function) with Js
在页面中如下:
<button type="button" onclick="ShowMessage('hi','title',false)">
Display Message
</button>
虽然有效,但 when call that from server side, Function don't work
。
答案 0 :(得分:2)
简单地说;你做不到。
JavaScript运行客户端,C#运行服务器端。
但是,您可以生成 JavaScript服务器端并将其输出到客户端。
请在此处查看我的回答:Call javascript from vb.net code behind
答案 1 :(得分:1)
在{-1}}注册的代码在页面末尾“呈现”。确切地说,在Page.ClientScript.RegisterStartupScript
关闭标记之前的script
标记中。但是,代码可能在完全生成DOM树之前运行。
由于您的form
函数访问DOM树,因此您的问题可能与缺少DOM树元素有关。
如果我正确地解释了您的问题,页面上没有JS错误。这可能是jquery选择器行为的结果:
ShowMessage
这将使用id dtext 设置所有元素的HTML。由于可能没有ID为 dtext 的元素,$("#dtext").html(Message);
将返回一个空集合,并且不会执行任何操作。
要解决此问题,您可以尝试在jquery文档就绪事件中运行代码。如果页面已满载,jQuery将触发此事件:
$("#dtext")
<强> ServerCode:强>
$(document).ready(function() { ShowMessage('messageBox','" + Message + "', false); }
答案 2 :(得分:-1)
你可以像这样从服务器端调用js函数
Page.ClientScript.RegisterStartupScript(this.GetType(), "show", "ShowMessage()",true);
希望这会对你有所帮助