c# eval 绑定 0个小数_C#后台中直接调用js方法

需求:

比如一个项目用到了汉语拼音的JS库,C# 在处理转拼音这一块上为了和前端保持结果一致,最有效 的办法,就是直接使用前端的这个汉语拼音的JS库.

那么此时,我们把这样的一个汉语拼音的JS库称之为需要交互的库,也就是前端 后端都需要用到.

解决方法

使用MSScriptControl.ScriptControl组件,这是是C#语言提供的一个COM组件,用来与脚本语言交互执行,支持JScript、VBScript、javascript语言。

204c505c69839224dce05c9d5238c2e3.png

项目添加引用

后端使用

///     /// C#中直接调用js方法 获取拼音 RadiotherapyPlatform/js/Main/pinyin.js    ///     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;    }    ///     /// 执行JS    ///     /// 参数体    /// JavaScript代码的字符串    ///     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;    }
///     /// C#中直接调用js方法 获取拼音 RadiotherapyPlatform/js/Main/pinyin.js    ///     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;    }    ///     /// 执行JS    ///     /// 参数体    /// JavaScript代码的字符串    ///     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没有注册类的的问题

86258a65d96bd7b052f36e42ab54f91a.png
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值