1.JavaScript访问C#函数
2.JavaScript访问C#变量
3.C#中访问JavaScript的已有变量
4.如何在C#中访问JavaScript函数
JavaScript访问C#函数
方法一、
1、首先建立一个按钮,在后台将调用或处理的内容写入button_click中;
2、在前台写一个js函数,内容为document.getElementById("btn1").click();
3、在前台或后台调用js函数,激发click事件,等于访问后台c#函数;
方法二、
1. 函数声明为public 或protected
{
return("Hello World");
}
2、在html里用<%=fucntion()%>可以调用
<head runat="server">
<title>Untitled Page</title>
<script language="javascript" type="text/javascript">
function say()
{
var strHello = "<%=Hello()%>";
alert(strHello);
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="say();" />
</div>
</form>
</body>
</html>
方法三、
function __doPostBack(eventTarget, eventArgument)
{
var frontForm = document.Form1; //指runat=server的form
frontForm.__EVENTTARGET.value = eventTarget;
frontForm.__EVENTARGUMENT.value = eventArgument;
frontForm.submit();
}
</script>
<input id="Button1" type="button" name="Button1" value="按钮" onclick="javascript:__doPostBack('Button1','')">
JavaScript中访问C#变量
方法一:1、通过页面上隐藏域访问<input id="xx" type="hidden" runat="server">
方法二:1、如后台定义了PUBLIC STRING N;前台js中引用该变量的格式为'<%=n%>'或"+<%=n%>+"
方法三:1、或者你可以在服务器端变量赋值后在页面注册一段脚本
"<script language='javascript'>var temp=" + tmp + "</script>"
tmp是后台变量,然后js中可以直接访问temp获得值。
C#中访问JavaScript的已有变量
方法一:1、前台使用静态文本控件隐藏域,将js变量值写入其中;
2、后台用request["id"]来获取值;
方法二:可以用cookie或session
C#中访问JavaScript函数
方法一:1、Page.RegisterStartupScript("ggg","<script>SetVisible(1);</script>");
方法二:使用Literal类,然后
{
string str;
str="<script language='javascript'>";
str+="selectRange()";
str+="</script>";
//Literal1.Visible=true;
Literal1.Text=str;
}
本文链接
2 IF EXISTS (SELECT * FROM sysobjects WHERE [name] = 'proc_Select_AssessmentProjectSetSearch')
3 DROP PROCEDURE proc_Select_AssessmentProjectSetSearch
4 GO
5 CREATE PROCEDURE proc_Select_AssessmentProjectSetSearch
6 (
7 @AssessmentProjectSetJobType Uniqueidentifier, --考核職位類型
8 @AssessmentProjectSetUidKey nvarchar(2000) output --考核項目
9 )
10 AS
11 declare @sql nvarchar(4000),@where nvarchar(4000)--,@AssessmentProjectSetUidKey nvarchar(4000)
12 set @where=''
13 select @AssessmentProjectSetUidKey=cast(AssessmentProjectSetUidKey as nvarchar(4000)) from AssessmentProjectSet where AssessmentProjectSetJobType=@AssessmentProjectSetJobType
14 set @sql='SELECT * FROM AssessmentProjectList where AssessmentProjectID in('
15 if(@AssessmentProjectSetUidKey IS null or @AssessmentProjectSetUidKey='')
16 begin
17 set @AssessmentProjectSetUidKey='1'
18 SET @where=@AssessmentProjectSetUidKey
19 end
20 else
21 begin
22 set @where=@AssessmentProjectSetUidKey
23 end
24 --print @AssessmentProjectSetUidKey
25 set @sql=@sql+@where+')'
26 --print @sql
27 exec (@sql)
28 GO
29
30 --測試
31 declare @s nvarchar(2220)
32 exec proc_Select_AssessmentProjectSetSearch '7606598a-34da-43e3-a107-950ae724b80d',@s output
33 select @s
34
35 ---
36 IF EXISTS (SELECT * FROM sysobjects WHERE [name] = 'proc_Select_AssessmentProjectSetReturnSearch')
37 DROP PROCEDURE proc_Select_AssessmentProjectSetReturnSearch
38 GO
39 CREATE PROCEDURE proc_Select_AssessmentProjectSetReturnSearch
40 (
41 @AssessmentProjectSetJobType Uniqueidentifier, --考核職位類型
42 @AssessmentProjectSetUidKey nvarchar(2000) output --考核項目
43 )
44 AS
45 declare @sql nvarchar(4000),@where nvarchar(400
前一篇链接:C#一步一步实现插件框架的示例(一)
今天我们再接着前一篇来完善插件功能。在前一篇中我们将生成插件按钮的代码直接写在了WorkBench中,无法体现插件式开发的优越性,现在我们来对其进行分离。
首先对WorkBench类中的构造函数进行修改,删除原来的生成按钮功能的函数,改变后如下:
{
InitializeComponent();
this.Controls.Add(ToolBar);
Application.Idle += new EventHandler(Application_Idle);
LoadDlls();
}
前一篇中对插件所标识的功能直接在构造函数中写死了。现在我们使用反射的方式来将其进行分离,我们将插件单独编译成一个DLL,当然一个DLL中可以包含多个插件,也可以一个DLL一个插件。由于在应用程序目录中可能会有很多其他的DLL,所以我们在这里约定包含有插件的DLL命名规则为:*.addin.dll,这样我们就只载入符合这种命名规则的DLL。
{
//获取所有符合命名规则的DLL
var files = Directory.GetFiles(Application.StartupPath, "*.addin.dll");
for (int i = 0; i < files.Length; i++)
{
LoadAddin(files[i]);
}
}
private void LoadAddin(string path)
{
//通过反射,获取DLL中的类型,并遍历所有为AbstractCommand子类的类,因为我们的插件都继承于AbstractCommand
Assembly assembly = Assembly.LoadFrom(path);
Type[] types = assembly.GetTypes();
foreach (var t in types)
{
var obj = assembly.CreateInstance(t.ToString());
if (obj is AbstractCommand)
{
AddButton((AbstractCommand)obj);
}
}
}
由于DLL中可能包含有不是插件的类,所以我们通过: if (obj is AbstractCommand)来判断,因为我们的插件都是继承于AbstractCommand类,然后就调用AddButton函数根据传入的AbstractCommand的子类来生成工具栏的按钮:
{
ToolBarButton t = new ToolBarButton(info);
this.ToolBar.Items.Add(t);
list.Add(t);
}
关于ToolBarButton类请查看上一篇介绍或者源码。
然后我们将上一篇中的test类移出,新建一个DLL,参考到本项目,编译输出名称为:*.addin.dll,将其输出目录设置到相同的目录。运行即可自动生成对应的按钮。
如中我们将所生成的*.addin.dll拷贝多个到当前目录,如:td1.addin.dll td2.addin.dll,再运行程序,程序会发现有三个插件,生成三个对应的按钮,只是他们的功能都是相同的。
最后附上源代码:http://www.kuaipan.cn/file/id_2334499409027889.htm
不知道在哪里上传文件,请朋友们指点。
下一篇介绍如何生成MDI窗口
本文链接