private void cmdSearch_Click(object sender, EventArgs e) { string keyWord = this.txtKeyWord.Text.Trim( ); if (keyWord == string.Empty) { this.lblInfo.Text = "请填写关键字"; return; } this.isStop = false; this.cmdSearch.Enabled = false; this.cmdStop.Enabled = true; this.cmdSpider.Enabled = false; this.txtKeyWord.Enabled = false; this.numericPageCount.Enabled = false; this.results.Clear( ); this.listPage.Items.Clear( ); this.currentPageIndex = 1; (this.searchState.StartActions[0] as ExecuteJQueryAction).JQuery = JQuery.Create("'input[name=q]'").Val(string.Format("'{0}'", keyWord)); this.ie.IEFlow.JumpToState(loadGoogleStateName); }
private void cmdSub_Click(object sender, EventArgs e) { // 创建 IEBrowser 对象, 用来控制窗口的 WebBrowser 控件. IEBrowser ie = new IEBrowser(this.webBrowser); // 载入已经放在运行目录的页面 ButtonClick.htm. ie.Navigate(Path.Combine(AppDomain.CurrentDomain.BaseDirectory + "ButtonClick.htm")); // 等待 ButtonClick.htm 完全载入. ie.IEFlow.Wait(new UrlCondition("wait", "ButtonClick.htm", StringCompareMode.EndWith)); // 根据按钮显示的文本模拟按钮点击. // 方法1: 安装搜索按钮的 javascript 函数 clickButton 来获取按钮并调用其 click 方法. // 安装 clickButton 函数. ie.InstallScript("function clickButton(text){for(var i=0;i<document.all.length;i++){if(document.all[i].value==text){document.all[i].click();break;}}}"); // 调用 clickButton 函数, 模拟点击文本为 Sub 的按钮. ie.InvokeScript("clickButton", new object[] { "Sub" }); // 方法2: 安装跟踪和 jQuery 脚本后, 执行 jQuery 来模拟点击按钮. // 安装跟踪脚本. ie.InstallTrace( ); // 安装在资源中的 jQuery 脚本. ie.InstallScript(Properties.Resources.jquery_1_5_2_min); // 执行获取按钮并模拟点击的 jQuery 脚本. ie.ExecuteJQuery(JQuery.Create("'[value=Sub]:button'").Click( )); }
private void cmd163Blog_Click(object sender, EventArgs e) { // 从当前的 WebBrowser 控件创建 IEBrowser 对象. IEBrowser ie = new IEBrowser(this.webBrowser); // 此处修改为您的 163 博客地址. ie.Navigate("http://<163 博客地址>"); ie.IEFlow.Wait(3); // 安装 jquery 脚本. ie.InstallJQuery(Properties.Resources.jquery_1_5_2_min); // 弹出登录框. ie.ExecuteJQuery(JQuery.Create("'a:contains(登录)'").Attr("'id'", "'denglu'")); ie.ExecuteScript("document.getElementById('denglu').click();"); // 填写用户信息并登录. ie.ExecuteJQuery(JQuery.Create("'.ztxt:text'").Val("'<用户名>'")); ie.ExecuteJQuery(JQuery.Create("'.ztxt:password'").Val("'<密码>'")); ie.ExecuteJQuery(JQuery.Create("'.wbtnok:button'").Attr("'id'", "'dl'")); ie.ExecuteScript("document.getElementById('dl').click();"); ie.IEFlow.Wait(5); // 安装 jquery 脚本. ie.InstallJQuery(Properties.Resources.jquery_1_5_2_min); // 跳转到日志页面. ie.ExecuteJQuery(JQuery.Create("'a:contains(日志)' ").Attr("'id'", "'rz'")); ie.ExecuteScript("document.getElementById('rz').click();"); ie.IEFlow.Wait(5); // 安装 jquery 脚本. ie.InstallJQuery(Properties.Resources.jquery_1_5_2_min); // 跳转到编辑日志页面. ie.ExecuteJQuery(JQuery.Create("'a:contains(写日志)' ").Attr("'id'", "'xrz'")); ie.ExecuteScript("document.getElementById('xrz').click();"); ie.IEFlow.Wait(5); // 安装 jquery 脚本. ie.InstallJQuery(Properties.Resources.jquery_1_5_2_min); // 填写日志内容. ie.ExecuteJQuery(JQuery.Create("'.ztag:text'").Val("'<标题>'")); ie.ExecuteJQuery(JQuery.Create("'#ne-auto-id-source'").Trigger("'click'")); ie.ExecuteJQuery(JQuery.Create("'textarea.ztag'").Val(string.Format("'{0}'", IEBrowser.EscapeCharacter("<日志 html 代码>")))); ie.ExecuteJQuery(JQuery.Create("'#ne-auto-id-source'").Trigger("'click'")); ie.ExecuteScript("document.getElementById('key-093402170-autotag').click();"); ie.IEFlow.Wait(5); // 发布日志. ie.ExecuteJQuery(JQuery.Create("'.fc09:button'").Attr("'id'", "'fb'")); ie.ExecuteScript("document.getElementById('fb').click();"); }
/// <summary> /// 从 Ajax 设置创建一个 JQuery 实例, 如果设置中的请求地址为空, 则返回 null. /// </summary> /// <param name="setting">Ajax 相关设置.</param> /// <returns>JQuery 实例.</returns> public static JQuery Create(AjaxSetting setting) { if (string.IsNullOrEmpty(setting.Url)) { return(null); } string quote; if (setting.IsSingleQuote) { quote = "'"; } else { quote = "\""; } string data; bool isWebService = !string.IsNullOrEmpty(setting.MethodName); if (!string.IsNullOrEmpty(setting.Data)) { data = setting.Data; } else if (string.IsNullOrEmpty(setting.Form)) { data = makeParameterExpression(setting.Parameters, isWebService, quote); } else { data = JQuery.Create(setting.Form, false).Serialize( ).Code; } string map = string.Format("url: {0}{1}{0}, dataType: {0}{2}{0}, data: {3}, type: {0}{4}{0}", quote, setting.Url + (isWebService ? "/" + setting.MethodName : string.Empty), setting.DataType, data, setting.Type ); if (!string.IsNullOrEmpty(setting.ContentType)) { map += string.Format(", contentType: {0}{1}{0}", quote, setting.ContentType); } foreach (Event @event in setting.SettingHelper.Events) { if (@event.Type != EventType.none && @event.Type != EventType.__init && !string.IsNullOrEmpty(@event.Value)) { map += ", " + @event.Type + ": " + @event.Value; } } return(JQuery.Create(false, false).Ajax("{" + map + "}")); }
//工作流程 private void SignAll() { //IEBrowser IEBrowser ie = new IEBrowser(wb); //JQUERY统计链接数 ie.InstallJQuery(JQuery.CodeMin); ie.ExecuteJQuery(JQuery.Create("'a'"), "__jBs"); int fav_count = ie.ExecuteJQuery <int>(JQuery.Create("__jBs").Length()); //将我喜欢的吧放到List List <string> fav_bar = new List <string>(); for (int index = 0; index < fav_count; index++) { ie.ExecuteJQuery(JQuery.Create("__jBs").Eq(index.ToString()), "__jB"); string fav_text = ie.ExecuteJQuery <string>(JQuery.Create("__jB").Text()); if (fav_text != "发言记录" && fav_text != "贴吧" && fav_text != "百度") { string fav_url = "http://wapp.baidu.com/m?kw=" + UrlEncode(fav_text); fav_bar.Add(fav_url); } } //历遍每个吧,查找签到的链接URL,打开。 int num = 0; foreach (string bar_url in fav_bar) { num++; tips.Text = "签到进度:" + num + "/" + fav_bar.Count; ie.Navigate(bar_url); ie.IEFlow.Wait(new UrlCondition("wait", bar_url, StringCompareMode.StartWith), 10); ie.InstallJQuery(JQuery.CodeMin); ie.ExecuteJQuery(JQuery.Create("'a'"), "__jCs"); int sign_count = ie.ExecuteJQuery <int>(JQuery.Create("__jCs").Length()); for (int index = 0; index < sign_count; index++) { ie.ExecuteJQuery(JQuery.Create("__jCs").Eq(index.ToString()), "__jC"); string sign_text = ie.ExecuteJQuery <string>(JQuery.Create("__jC").Text()); string sign_url = "http://wapp.baidu.com" + ie.ExecuteJQuery <string>(JQuery.Create("__jC").Attr("'href'")); if (sign_text == "签到") { ie.Navigate(sign_url); ie.IEFlow.Wait(new UrlCondition("wait", sign_url, StringCompareMode.StartWith)); } } } if (num != 0) { Environment.Exit(0); } }
private void cmdManaged_Click(object sender, EventArgs e) { // 从当前的 WebBrowser 控件创建 IEBrowser 对象. IEBrowser ie = new IEBrowser(this.webBrowser, scripting: new ManagedForScript( )); // 安装跟踪脚本, 执行 jquery 和调用托管代码必需. ie.InstallTrace( ); // 安装本地的 jquery 脚本. ie.InstallScript(Properties.Resources.jquery_1_5_2_min); // 得到搜索框的内容. string key = ie.ExecuteJQuery <string> (JQuery.Create("'[name=q]:text'").Val( )); // 通过 javascript 调用托管的对象 ManagedForScript 的 MakeCondition, 生成新的搜索内容, 其实可以直接调用 MakeCondition, 这里只是演示如何调用托管代码. key = ie.ExecuteManaged <string> ("MakeCondition", parameters: new string[] { "'" + key + "'" }); // 将新的搜索内容填写入搜索框. ie.ExecuteJQuery(JQuery.Create("'[name=q]:text'").Val("'" + key + "'")); }
private void cmdNoConflict_Click(object sender, EventArgs e) { // 从当前的 WebBrowser 控件创建 IEBrowser 对象. IEBrowser ie = new IEBrowser(this.webBrowser); // 导航到页面 http://nt.discuz.net/, 此页面中已经定义了 $, 将和 jquery 的 $ 冲突. ie.Navigate("http://nt.discuz.net/"); // 等待 5 秒钟, 以便页面载入完毕. ie.IEFlow.Wait(5); // 安装资源中的 jquery 脚本. ie.InstallJQuery(Properties.Resources.jquery_1_5_2_min); // 解除 jquery 的 $ 定义, 但仍然可以只用 jQuery 定义. ie.ExecuteJQuery(JQuery.Create(false, true).NoConflict( )); // 执行 jquery 脚本 jQuery('*').length, 获得页面上总元素个数. Console.WriteLine("页面上共有 {0} 个元素", ie.ExecuteJQuery(JQuery.Create("'*'", false).Length( ))); }
private void ieStateCompleted(FlowState <WebPageAction, WebPageCondition> state, ref bool isStop) { if (this.isStop) { isStop = true; return; } switch (state.Name) { case resultPageInstallJQueryStateName: this.ie.ExecuteJQuery(JQuery.Create("'li.g'"), "__jlis"); int resultCount = this.ie.ExecuteJQuery <int> (JQuery.Create("__jlis").Length( ), "__jfSearch"); for (int index = 0; index < resultCount; index++) { this.ie.ExecuteJQuery(JQuery.Create("__jlis").Eq(index.ToString( )), "__jli"); string title = this.ie.ExecuteJQuery <string> (JQuery.Create("__jli").Find("'.r'").Text( ), "__jfSearch"); string url = this.ie.ExecuteJQuery <string> (JQuery.Create("__jli").Find("'a.l'").Attr("'href'"), "__jfSearch"); if (!string.IsNullOrEmpty(title) && !string.IsNullOrEmpty(url) && !this.results.ContainsKey(url)) { this.listPage.Items.Add(title + "-" + url); this.results.Add(url, title); } } (this.nextPageState.StartActions[0] as ExecuteJavaScriptAction).Code = string.Format("window.location = '{0}';", this.ie.ExecuteJQuery <string> (JQuery.Create("'#pnnext'").Attr("'href'"), "__jfSearch")); if (this.currentPageIndex++ >= this.numericPageCount.Value) { this.stopSearch( ); isStop = true; } break; } }
private void cmdExecuteJQuery_Click(object sender, EventArgs e) { // 从当前的 WebBrowser 控件创建 IEBrowser 对象. IEBrowser ie = new IEBrowser(this.webBrowser); // 导航到页面 http://www.google.com.hk/. ie.Navigate("http://www.google.com.hk/"); // 等待页面载入完毕. ie.IEFlow.Wait(new UrlCondition("wait", "http://www.google.com.hk", StringCompareMode.StartWith)); // 安装本地的 jquery 脚本. ie.InstallJQuery(JQuery.CodeMin); // 执行 jquery 脚本 $('*').length, 获得页面上总元素个数. Console.WriteLine("页面上共有 {0} 个元素", ie.ExecuteJQuery(JQuery.Create("'*'").Length( ))); // 执行 jquery 脚本 $('a'), 获得页面上所有的 a 元素并将结果保存在 __jAs 变量中. ie.ExecuteJQuery(JQuery.Create("'a'"), "__jAs"); // 得到 __jAs 变量中包含的 a 元素的个数. int count = ie.ExecuteJQuery <int> (JQuery.Create("__jAs").Length( )); for (int index = 0; index < count; index++) { // 得到 __jAs 变量中索引为 index 的 a 元素, 并保存在 __jA 变量中. ie.ExecuteJQuery(JQuery.Create("__jAs").Eq(index.ToString( )), "__jA"); // 输出 a 元素的 innerText 和 href 属性. Console.WriteLine(string.Format( "a[{0}], '{1}', '{2}'", index, ie.ExecuteJQuery <string> (JQuery.Create("__jA").Text( )), ie.ExecuteJQuery <string> (JQuery.Create("__jA").Attr("'href'")) ) ); } }
private void button1_Click(object sender, System.EventArgs e) { string strAnswer = FindAnswer(webBrowser_Main); if (strAnswer != "") { //J_AnswerInput //try-detail-buy IEBrowser ie = new IEBrowser(webBrowser_Main); ie.InstallJQuery(Properties.Resources.jquery_1_6_4_min); if (ie.IsJQueryInstalled) { ie.ExecuteJQuery(JQuery.Create("'#J_AnswerInput'").Val("'" + strAnswer + "'")); //点击免费申请按钮 ie.ExecuteJQuery(JQuery.Create("'a.try-detail-buy'").Attr("'id'", "'trybuy'")); ie.ExecuteScript("document.getElementById('trybuy').click();"); //thTest = new Thread(new ThreadStart(aaa)); //thTest.Start(); } } }
private void cmdAdd_Click(object sender, EventArgs e) { // 创建 IEBrowser 对象, 用来控制窗口的 WebBrowser 控件. IEBrowser ie = new IEBrowser(this.webBrowser); // 载入已经放在运行目录的页面 ButtonClick.htm. ie.Navigate(Path.Combine(AppDomain.CurrentDomain.BaseDirectory + "ButtonClick.htm")); // 等待 ButtonClick.htm 完全载入. ie.IEFlow.Wait(new UrlCondition("wait", "ButtonClick.htm", StringCompareMode.EndWith)); // 模拟具有惟一 id 属性的按钮点击. // 方法1: 执行 javascript 脚本来获取按钮并调用其 click 方法. ie.ExecuteScript("document.getElementById('cmdAdd').click();"); // 方法2: 安装跟踪和 jQuery 脚本后, 执行 jQuery 来模拟点击按钮. // 安装跟踪脚本. ie.InstallTrace( ); // 安装在资源中的 jQuery 脚本. ie.InstallScript(Properties.Resources.jquery_1_5_2_min); // 执行获取按钮并模拟点击的 jQuery 脚本. ie.ExecuteJQuery(JQuery.Create("'#cmdAdd'").Click( )); }
private string analyse(string title, string publishDateString, string content, out string deliverySpot, out string steelType, out DateTime publishDate, out SortedList <int, string> columns, out List <List <string> > valueLists) { deliverySpot = null; steelType = null; publishDate = DateTime.Now; columns = new SortedList <int, string> (); valueLists = new List <List <string> > (); if (string.IsNullOrEmpty(title) || string.IsNullOrEmpty(publishDateString) || string.IsNullOrEmpty(content)) { return("title, publishDateString 或者 content 为空"); } if (!title.Contains("日") || !title.Contains("市场") || !title.Contains("价格")) { return("无法分析的标题"); } try { if (publishDateString.Length > 10) { publishDate = Convert.ToDateTime(publishDateString); } else { publishDate = Convert.ToDateTime(publishDateString + DateTime.Now.ToString(" hh:mm:ss")); } } catch { return("发布日期无效"); } this.ie.ExecuteJQuery(JQuery.Create("'body'").Html(content)); this.ie.ExecuteJQuery(JQuery.Create("'tr'"), "trJQuery"); int tdCount = this.ie.ExecuteJQuery <int> (JQuery.Create("trJQuery").Children("'td'").Length()); int thCount = this.ie.ExecuteJQuery <int> (JQuery.Create("'tr:first-child'").Children("'td'").Length()); if (tdCount % thCount != 0) { return("table 中每个 tr 包含的 td 个数可能不同"); } int usableThCount = 0; for (int tdIndex = 0; tdIndex < thCount; tdIndex++) { string text = this.ie.ExecuteJQuery <string> (JQuery.Create("trJQuery").Children(string.Format("'td:eq({0})'", tdIndex)).Text()); usableThCount++; if (text.Contains("品名")) { columns.Add(columns.Count, "sv"); } else if (text.Contains("规格")) { columns.Add(columns.Count, "ss"); } else if (text.Contains("材质")) { columns.Add(columns.Count, "sq"); } else if (text.Contains("产地")) { columns.Add(columns.Count, "pa"); } else if (text.Contains("价格")) { columns.Add(columns.Count, "p"); } else if (text.Contains("涨跌")) { columns.Add(columns.Count, "r"); } else if (text.Contains("备注")) { columns.Add(columns.Count, "re"); } else { columns.Add(columns.Count, columns.Count.ToString()); usableThCount--; } } if (usableThCount < 7) { return("符合标准的字段不足 7 个"); } try { deliverySpot = title.Substring(title.IndexOf("日") + 1, title.IndexOf("市场") - title.IndexOf("日") - 1); steelType = title.Substring(title.IndexOf("市场") + 2, title.IndexOf("价格") - title.IndexOf("市场") - 2); } catch { return("标题分析错误"); } if (string.IsNullOrEmpty(deliverySpot) || string.IsNullOrEmpty(steelType)) { return("城市或者种类为空"); } if (deliverySpot.Length > 5) { return("城市名称过长"); } List <string> values = null; for (int tdIndex = thCount; tdIndex < tdCount; tdIndex++) { string text = this.ie.ExecuteJQuery <string> (JQuery.Create("trJQuery").Children(string.Format("'td:eq({0})'", tdIndex)).Text()); if (tdIndex % thCount == 0) { values = new List <string> (); valueLists.Add(values); } values.Add(text); } return(string.Empty); }
public static void Discuz(IEBrowser ie, string userName, string password, string url, string title, string content) { // 导航到页面 dz 论坛的页面. ie.Navigate(url); // 等待 10 秒钟, 以便页面载入完毕. ie.IEFlow.Wait(10); // 安装资源中的 jquery 脚本. ie.InstallJQuery(Properties.Resources.jquery_1_5_2_min); // 解除 jquery 的 $ 定义, 但仍然可以只用 jQuery 定义. ie.ExecuteJQuery(JQuery.Create(false, true).NoConflict( )); // 安装 javascript 函数 clickLink, 根据超链接的文本点击超链接. ie.InstallScript( "function clickLink(text) {" + " links = document.getElementsByTagName('a');"+ " for(var index = 0; index < links.length; index++)"+ " {"+ " if(links[index].innerText == text)"+ " {"+ " links[index].click();"+ " break;"+ " }"+ " }"+ "}" ); // 是否存在已经登录后显示的短消息. if (ie.ExecuteJQuery <int> (JQuery.Create("'#pm_ntc'", false).Length( )) == 1) { // 调用 javascript 函数 clickLink, 模拟点击退出链接. ie.InvokeScript("clickLink", new object[] { "退出" }); // 等待 3 秒钟, 以便退出完毕. ie.IEFlow.Wait(3); // 重新调用自身. Discuz(ie, userName, password, url, title, content); return; } // 设置用户名. ie.ExecuteJQuery(JQuery.Create("'#ls_username'", false).Val("'" + userName + "'")); // 设置密码. ie.ExecuteJQuery(JQuery.Create("'#ls_password'", false).Val("'" + password + "'")); // 密码框获得焦点. ie.ExecuteJQuery(JQuery.Create("'#ls_password'", false).Focus( )); // 等待 5 秒钟以显示验证码. ie.IEFlow.Wait(5); // 获取验证码并显示给用户输入. FormVCode vCodeWindow = new FormVCode( ); vCodeWindow.Image = ie.CopyImage("'vcodeimg1'"); // 用户是否确认. if (vCodeWindow.ShowDialog( ) == DialogResult.OK) { // 验证码框获得焦点. ie.ExecuteJQuery(JQuery.Create("'#vcodetext_header1'", false).Focus( )); // 填写验证码并多加 1. ie.ExecuteJQuery(JQuery.Create("'#vcodetext_header1'", false).Val("'" + vCodeWindow.VCode + "1'")); // 模拟一个退格键, 删除掉 1. SendKeys.Send("{Backspace}"); // 等待 2 秒. ie.IEFlow.Wait(2); // 登录框提交. ie.ExecuteJQuery(JQuery.Create("'#lsform'", false).Submit()); // 等待 5 秒, 以便登录完成. ie.IEFlow.Wait(5); // 是否是验证码错误. if (ie.ExecuteJQuery <int> (JQuery.Create("'p:contains(验证码错误)'", false).Length( )) == 1) { // 验证码错误重新登录. Discuz(ie, userName, password, url, title, content); return; } TOPIC: // 随机导航至某一话题. ie.Navigate("http://nt.discuz.net/showtopic-" + new Random( ).Next(11000, 18000).ToString() + ".html"); // 等待 5 秒, 以便页面完成. ie.IEFlow.Wait(5); // 安装 jquery 脚本的一系列操作. ie.InstallJQuery(Properties.Resources.jquery_1_5_2_min); ie.ExecuteJQuery(JQuery.Create(false, true).NoConflict( )); // 话题不存在则重新选择. if (ie.ExecuteJQuery <int> (JQuery.Create("'p:contains(该主题不存在)'", false).Length( )) == 1) { goto TOPIC; } // 切换源码编辑方式. ie.InvokeScript("clickLink", new object[] { "Code" }); // 填写内容. ie.ExecuteJQuery(JQuery.Create("'#quickpostmessage'", false).Val("'" + content + "'")); // 验证码框获得焦点. ie.ExecuteJQuery(JQuery.Create("'#vcodetext1'", false).Focus( )); // 等待 5 秒钟以显示验证码. ie.IEFlow.Wait(3); // 获取验证码并显示给用户输入. vCodeWindow = new FormVCode( ); vCodeWindow.Image = ie.CopyImage("'vcodeimg1'"); // 用户是否确认. if (vCodeWindow.DialogResult == DialogResult.OK) { // 填写验证码并多加1. ie.ExecuteJQuery(JQuery.Create("'#vcodetext1'", false).Val("'" + vCodeWindow.VCode + "1'")); // 模拟一个退格键, 删除掉 1. SendKeys.Send("{Backspace}"); // 等待 2 秒. ie.IEFlow.Wait(3); // 提交. ie.ExecuteJQuery(JQuery.Create("'#quickpostsubmit'", false).Click( )); } else { Discuz(ie, userName, password, url, title, content); return; } } else { Discuz(ie, userName, password, url, title, content); return; } }
private static string makeParameterExpression(Parameter[] parameters, bool isWebService, string quote) { if (null == quote) { quote = string.Empty; } if (null == parameters || parameters.Length == 0) { if (isWebService) { return(quote + "{ }" + quote); } else { return("{ }"); } } string parameterExpression = string.Empty; foreach (Parameter parameter in parameters) { if (null != parameter && parameter.Value != string.Empty) { switch (parameter.Type) { case ParameterType.Selector: if (isWebService) { if (parameterExpression != string.Empty) { parameterExpression += string.Format(" + {0} ,{0}", quote); } parameterExpression += string.Format(" + {0}{1}: {0} + jQuery.panzer.encodeValue({2}, {3}, {0}{4}{0}, {5})", quote, parameter.Name, JQuery.Create(string.Format("jQuery.panzer.createJQuery({0})", UISetting.CreateJQuerySelector(parameter.Value))).Val( ).Code, parameter.Default, parameter.DataType.ToString( ).ToLower( ), parameter.Provider); } else { parameterExpression += string.Format(" {1}: jQuery.panzer.convert({2}, {3}, {0}{4}{0}, {5}),", quote, parameter.Name, JQuery.Create(string.Format("jQuery.panzer.createJQuery({0})", UISetting.CreateJQuerySelector(parameter.Value))).Val( ).Code, parameter.Default, parameter.DataType.ToString( ).ToLower( ), parameter.Provider); } break; case ParameterType.Expression: if (isWebService) { if (parameterExpression != string.Empty) { parameterExpression += string.Format(" + {0} ,{0}", quote); } parameterExpression += string.Format(" + {0}{1}: {0} + jQuery.panzer.encodeValue({2}, {3}, {0}{4}{0}, {5})", quote, parameter.Name, parameter.Value, parameter.Default, parameter.DataType.ToString( ).ToLower( ), parameter.Provider); } else { parameterExpression += string.Format(" {1}: jQuery.panzer.convert({2}, {3}, {0}{4}{0}, {5}),", quote, parameter.Name, parameter.Value, parameter.Default, parameter.DataType.ToString( ).ToLower( ), parameter.Provider); } break; } } } if (isWebService) { parameterExpression = quote + "{" + quote + parameterExpression + " + " + quote + "}" + quote; } else { parameterExpression = "{" + parameterExpression.TrimEnd(',') + "}"; } return(parameterExpression); }