前言:
今天各位老铁们对“怎么调用js方法调用”大致比较关切,我们都想要分析一些“怎么调用js方法调用”的相关知识。那么小编在网摘上搜集了一些对于“怎么调用js方法调用””的相关知识,希望你们能喜欢,小伙伴们快快来了解一下吧!需求:
比如一个项目用到了汉语拼音的JS库,C# 在处理转拼音这一块上为了和前端保持结果一致,最有效 的办法,就是直接使用前端的这个汉语拼音的JS库.
那么此时,我们把这样的一个汉语拼音的JS库称之为需要交互的库,也就是前端 后端都需要用到.
解决方法
使用MSScriptControl.ScriptControl组件,这是是C#语言提供的一个COM组件,用来与脚本语言交互执行,支持JScript、VBScript、javascript语言。
后端使用
/// <summary> /// C#中直接调用js方法 获取拼音 RadiotherapyPlatform/js/Main/pinyin.js /// </summary> private string GetSpellCode(string CnStr) { string strTemp = ""; try { string path = AppDomain.CurrentDomain.BaseDirectory + "js/Main/pinyin.js"; string str2 = File.ReadAllText(path); string fun = string.Format(@"pinyin.getFullChars('{0}')", CnStr); strTemp = ExecuteScript(fun, str2); } catch (Exception ex) { string str = ex.Message; } return strTemp; } /// <summary> /// 执行JS /// </summary> /// <param name="sExpression">参数体</param> /// <param name="sCode">JavaScript代码的字符串</param> /// <returns></returns> private string ExecuteScript(string sExpression, string sCode) { MSScriptControl.ScriptControl scriptControl = new MSScriptControl.ScriptControl(); scriptControl.UseSafeSubset = true; scriptControl.Language = "JScript"; scriptControl.AddCode(sCode); try { string str = scriptControl.Eval(sExpression).ToString(); return str; } catch (Exception ex) { string str = ex.Message; } return null; }
/// <summary> /// C#中直接调用js方法 获取拼音 RadiotherapyPlatform/js/Main/pinyin.js /// </summary> private string GetSpellCode(string CnStr) { string strTemp = ""; try { string path = AppDomain.CurrentDomain.BaseDirectory + "js/Main/pinyin.js"; string str2 = File.ReadAllText(path); string fun = string.Format(@"pinyin.getFullChars('{0}')", CnStr); strTemp = ExecuteScript(fun, str2); } catch (Exception ex) { string str = ex.Message; } return strTemp; } /// <summary> /// 执行JS /// </summary> /// <param name="sExpression">参数体</param> /// <param name="sCode">JavaScript代码的字符串</param> /// <returns></returns> private string ExecuteScript(string sExpression, string sCode) { MSScriptControl.ScriptControl scriptControl = new MSScriptControl.ScriptControl(); scriptControl.UseSafeSubset = true; scriptControl.Language = "JScript"; scriptControl.AddCode(sCode); try { string str = scriptControl.Eval(sExpression).ToString(); return str; } catch (Exception ex) { string str = ex.Message; } return null; }
这样我们就实现了在后端使用汉语拼音的JS库了
前端使用
pinyin.getFullChars($(this).val());
至此,我们就完成了这样一个交互库的两端调用.
其实也还有其他几种方式可以实现这一需求,可以使用webBrowser,先去加载页面,再去触发js
this.webBrowser1.Navigate("test.html");//浏览顺加载网页 this.webBrowser1.Document.InvokeScript("js方法名称","传给js方法的值");//执行js方法
亦或者
RegisterStartupScript回发机制
发布的时候记得服务器iis开启,否则会报80040154没有注册类的的问题
标签: #怎么调用js方法调用