C#调用前台JavaScript中的变量

by xuleib 2016.1.11 15:27

注:脚本执行有风险,对于客户正式环境请在研发指导下执行。

在后台代码中有时候会用到前台js脚本中的变量,但是怎么传到后台,却尝试了好多方法。网上好多案例在U9中开发都不太适用。

 

下面看看C#是怎样调用js变量的。

首先创建两个控件,在UIModel中自定义一个文本框TextUkey拖入界面用于存储变量的值,另外一个是按钮控件BtnReLoad,用于收集数据。

AfterCreateChildControls()中加入代码

   作用是给文本框控件赋值为1。刷新界面发现界面控件值已经变成了1.但是后台获取this.TextUkey.Value或者视图中获取都是null

那是因为程序加载完毕后才执行前台的脚本。所以无法在后台获取。

StringBuilder sb = new StringBuilder();

sb.AppendFormat("document.getElementById('{0}_textbox').value='1';", this.TextUkey.ClientID);

 

   那就加上下面代码,触发buttonclick时,重新收集数据,这样就能获取到文本框控件的值了。

                sb.AppendFormat("$find('{0}')._button.click();", this.BtnReLoad.ClientID);

   加上刷新代码后发现界面无限的刷新,而我们只需要多刷新一次即可。所以整个代码前加入if (!this.Page.IsPostBack){}OK了。

 

以下是完整代码

AfterCreateChildControls()

{

if (!this.Page.IsPostBack)

{

StringBuilder sb = new StringBuilder();

sb.AppendFormat("document.getElementById('{0}_textbox').value='1';", this.TextUkey.ClientID);

   sb.AppendFormat("$find('{0}')._button.click();", this.BtnReLoad.ClientID);

 if(ScriptManager.GetCurrent(this.Page).EnablePartialRendering)                    ((BaseWebForm)this.Action.CurrentPart).JavaScriptExecQueue.Add("enbalePage", sb.ToString());

 else

AtlasHelper.RegisterAtlasStartupScript(this.Page, this.GetType(), "enbalePage", sb.ToString(), true);

 

}

}

然后第二次刷新,界面重新收集数据后,我们在AfterUIModelBinding()中,通过this.Model.FilterView.FocusedRecord.TextUkey获取,或者this.TextUkey.Value都能获取到了。

Tags:

评论 (4) -

lkc wrote at 2016/1/13 8:47:33 #

这是什么交互场景?U9框架在设计之初就是不希望应用开发直接写js的 所以一般的交互都不应该这样实现的

seo, 美国 wrote at 2018/6/27 16:21:20 #

Hi! Do you know if they make any plugins to safeguard against hackers? I'm kinda paranoid about losing everything I've worked hard on. Any suggestions?

read me 美国 wrote at 2018/7/9 19:08:27 #

You can certainly see your enthusiasm in the work you write. The world hopes for more passionate writers such as you who aren't afraid to say how they believe. At all times go after your heart.

read me 美国 wrote at 2018/7/19 14:39:00 #

you're truly a good webmaster. The web site loading velocity is amazing. It sort of feels that you're doing any distinctive trick. In addition, The contents are masterwork. you have performed a fantastic task in this matter!

添加评论



biuquote
微笑得意调皮害羞酷大笑惊讶发呆喜欢可怜尴尬闭嘴噘嘴皱眉伤心抓狂呕吐坏笑漫骂发怒
Loading


RecentComments

评论 RSS

Statistics

989 篇文章
0 个单页
653276 条评论
11 次评分
249614 次访问
访问统计开始于 2019年12月15日
平均日访问 5546 次
当前 127 人在线