我正在开发asp.net(C#)项目,其中包括一些页面文件(aspx,aspx.cs)和一些仅(.cs)文件。我可以使用scriptregister
从页面文件(aspx,aspx.cs)访问JavaScript / jQuery函数。但我的问题是如何从(.cs)文件访问JavaScript / jQuery函数。我在(.cs)文件中生成了一些html标签,因此需要从(.cs)类调用JavaScript / jQuery函数。
我拥有的文件(例如):
实际上,我要做的是在Web.cs(业务对象)中生成一些HTML代码,并在web.cs中生成HTML代码时,我需要一些由jQuery函数生成的其他动态HTML代码,输出是我的关注:var output ="My HTML Code Generated by jQuery function"
现在我需要将上面的jQuery输出与Web.cs HTML代码生成合并。
请告诉我如何才能从web.cs调用jQuery函数并将结果从jQuery返回到web.cs才能合并?
由于
答案 0 :(得分:2)
这个问题并没有说得太老实。你可能对这一切如何协同工作存在误解。
c#代码在Web服务器上运行,输出是呈现给浏览器的Html代码,包括javascript。
Javascript被加载到浏览器中并在客户端的计算机上本地执行。
如果您试图操纵或控制客户端页面的某些方面加载javascript或其他任何一个将脚本添加到页面本身( .aspx文件)注册并使用Client.Register api流式传输它打电话,或添加<脚本....>标记以将其导入文件。
我不知道Web.cs类在做什么,我会假设它是某种逻辑或业务对象。您需要将客户端脚本的需求从它传送回表示层,以使其在客户端运行。
如果你的印象是你可以从服务器端运行javascript,那你就错了。
答案 1 :(得分:1)
ASP代码是服务器端 javascript在客户端。
你无法真正调用javascript 您可以通过ASP代码创建一个html文件,该代码将生成一个onload javascript方法 然后当加载html时,javascript将运行。
答案 2 :(得分:1)
这是使用 Page.RegisterStartupScript方法
完成的 <%@ Page Language="C#"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
public void Page_Load(Object sender, EventArgs e)
{
String csname1 = "PopupScript";
String csname2 = "ButtonClickScript";
if (!IsClientScriptBlockRegistered(csname1))
{
String cstext1 = "<script type=\"text/javascript\">" +
"alert('Hello World');</" + "script>";
RegisterStartupScript(csname1, cstext1);
}
if (!IsClientScriptBlockRegistered(csname2))
{
StringBuilder cstext2 = new StringBuilder();
cstext2.Append("<script type=\"text/javascript\"> function DoClick() {");
cstext2.Append("Form1.Message.value='Text from client script.'} </");
cstext2.Append("script>");
RegisterClientScriptBlock(csname2, cstext2.ToString());
}
}
</script>
<html >
<head>
<title>RegisterClientScriptBlock Example</title>
</head>
<body>
<form id="Form1"
runat="server">
<input type="text" id="Message" /> <input type="button" value="ClickMe" onclick="DoClick()" />
</form>
</body>
</html>
答案 3 :(得分:0)
JavaScript是客户端,c#是服务器端,因此您无法从服务器端调用JavaScript,但是您可以安排在客户端呈现页面时执行JavaScript ...
答案 4 :(得分:0)
除非你有绝对坚如磐石的用例,否则你应该重新考虑从c#中进行JavaScript渲染。
通常情况下,将两者分开要简单得多。使用c#生成标记,并“标记”相应的元素(可能使用CSS类,因为ASP.NET具有如此糟糕的id处理)。
然后简单地使用jQuery来查找和操作那些标记的元素,但是使用外部的js脚本,而不是内联生成JavaScript本身。
答案 5 :(得分:0)
您可以将ScriptManager传递给Web.cs,然后使用您在代码隐藏中使用的相同方法,但是最好只是从Web.cs构造和返回javascript字符串,并且仍然可以调用js像你一直在做的代码隐藏。
答案 6 :(得分:0)
如果您只是想从一个独立的cs文件注册一些客户端脚本,我能看到这个工作的唯一方法是将您的函数传递给该页面的ClientScriptManager。
答案 7 :(得分:0)
脚本注册实际上发生在“页面”对象上,即Web.cs无权访问页面以注册脚本。例如,如果希望Web.cs在Default.aspx页面上注册脚本,则需要通过接口或类定义授予对Default.aspx / cs“Page”对象的Page.ClientScript.RegisterClientScriptBlock方法的访问权限。