在view中获取参数的值

如果url是 /home/index?id=3 直接Request就ok。

但是如果路由设定为:{controller}/{action}/{id} 

url是 /home/index/3  
这时想在页面View中获取参数id的值,该怎么获取?

 

查了下资料好多人都利用Action获取到参数值后,用Viewdata传到View中
例如
Controlers中的phonelist这样定义 
public ActionResult phonelist(int id) 
  { 
  ViewData["id"] = id;  
  return View(); 
  } 
其实,没有必要,只要在view中这样获取就可以:

<%=Html.ViewContext.RouteData.Values["id"]%>

就算没有id的参数也不会报错。

<think>我们正在讨论帆软报表中如何获取参数。用户之前的问题是关于设置参数(将单元格O3的设置为参数lastname),现在用户的问题是如何在帆软表格控件中获取参数lastname的。 根据帆软报表的JS API,获取参数的方法通常是通过`contentPane.parameterEl`对象。具体步骤如下: 1. 获取参数对象:`contentPane.parameterEl` 2. 使用`getWidgetByName`或直接通过参数获取参数。 但是,在帆软中,参数面板中的参数可以通过以下方式获取: ```javascript // 获取参数面板中名为"lastname"的参数 var lastNameValue = contentPane.parameterEl.getWidgetByName("lastname").getValue(); ``` 注意:这种方法适用于参数面板中已经存在的参数。 另外,如果参数是在报表中定义的,但不在参数面板中显示(隐藏参数),则可以通过以下方式获取: ```javascript var lastNameValue = _g().getParameterValue("lastname"); ``` 或者: ```javascript var lastNameValue = contentPane.curLGP.getParameterValue("lastname"); ``` 但是,根据帆软文档,更常用的是通过`contentPane`来获取参数。 因此,在帆软表格控件中(比如在单元格的编辑后事件、按钮点击事件等地方),你可以这样获取参数: ```javascript // 方法1:通过参数面板的控件获取(要求参数面板中有该参数且控件名称为lastname) var lastName = contentPane.parameterEl.getWidgetByName("lastname").getValue(); // 方法2:通过报表参数对象获取(适用于所有已定义的参数,无论是否显示在参数面板) var lastName = contentPane.curLGP.getParameterValue("lastname"); // 方法3:使用_g()函数(注意:_g()函数是帆软内置的全局函数,表示当前报表) var lastName = _g().getParameterValue("lastname"); ``` ### 示例:在单元格编辑后事件中获取参数 假设你需要在某个单元格(比如A1)编辑后,获取参数lastname的,并设置到另一个单元格(比如B1)中: ```javascript // 在A1单元格的编辑后事件中 contentPane.curLGP.addCellValueChangeListener(0, 0, function() { // A1:行0,列0 // 获取参数lastname的 var lastName = _g().getParameterValue("lastname"); // 将参数设置到B1单元格 contentPane.curLGP.setCellValue(0, 1, lastName); // B1:行0,列1 }); ``` ### 注意事项: 1. 参数必须已经定义,否则获取到的为空或undefined。 2. 在报表初始化时,参数可能还未加载,因此建议在事件(如按钮点击、单元格编辑后等)中获取参数。 3. 如果参数改变,需要重新获取,可以监听参数变化事件(但帆软中参数变化事件需要自己绑定,通常参数变化会触发报表刷新,所以可能需要根据实际情况处理)。 ### 在帆软设计器中如何定义参数? 在帆软设计器中,定义参数的步骤: 1. 打开模板,点击菜单栏的“模板”->“模板参数”。 2. 添加一个参数,命名为“lastname”,设置默认等属性。 ### 相关问题: 1. 如何在帆软报表中设置参数?(之前已经回答过) 2. 帆软报表中如何通过参数实现动态SQL查询? 3. 如何将多个单元格批量设置为参数? 4. 帆软移动端参数递有哪些特殊注意事项? 现在,用户的问题是获取参数,因此我们重点回答如何获取。 ### 最终回答: 在帆软报表的JavaScript代码中,获取参数"lastname"的,可以使用以下三种方法之一: ```javascript // 方法1(推荐,适用于所有已定义参数) var lastName = contentPane.curLGP.getParameterValue("lastname"); // 方法2(使用全局函数_g()) var lastName = _g().getParameterValue("lastname"); // 方法3(通过参数面板控件,需要参数面板中有该控件) var lastName = contentPane.parameterEl.getWidgetByName("lastname").getValue(); ``` 请根据实际场景选择合适的方法。 ### 示例:在按钮点击事件中获取参数并弹出提示 ```javascript // 给按钮添加点击事件 $("#btn").click(function(){ // 获取参数 var lastName = _g().getParameterValue("lastname"); // 弹出提示 FR.Msg.alert("提示", "参数lastname的为:" + lastName); }); ``` ### 引用说明: 在帆软报表中,通过JavaScript操作参数和单元格是常见的需求,具体方法可参考帆软官方JS API文档[^2]。</think>### 帆软表格控件中获取参数 "lastname" 的 在帆软报表中,可以通过以下 JavaScript 方法获取参数 "lastname" 的: #### 方法一:使用 `_g().getParameterValue()`(推荐) ```javascript // 获取参数(推荐方法) var lastName = _g().getParameterValue("lastname"); // 使用示例 console.log("参数: " + lastName); contentPane.curLGP.setCellValue(2, 14, lastName); // 设置到O3单元格 ``` #### 方法二:通过参数面板控件获取 ```javascript // 通过参数面板控件获取 var paramWidget = contentPane.parameterEl.getWidgetByName("lastname"); var lastName = paramWidget ? paramWidget.getValue() : ""; // 使用示例 if (lastName) { FR.Msg.toast("获取成功: " + lastName); } else { FR.Msg.alert("错误", "参数不存在或为空"); } ``` #### 方法三:在单元格公式中直接引用 在帆软设计器中,可以直接在单元格公式中使用参数语法: ```plaintext =$lastname ``` 1. 选中目标单元格(如 O3) 2. 在公式编辑器中输入:`=$lastname` 3. 保存后单元格将自动显示参数 ### 关键说明: 1. **参数必须先定义** 在帆软设计器中创建参数: - 模板 → 模板参数 → 添加参数 "lastname" - 设置默认和数据类型(通常为字符串) 2. **参数递方式** 在打开报表时参数: ```javascript FR.doHyperlinkByGet({ url: "/webroot/decision/view/report?viewlet=your_report.cpt", para: { lastname: "Smith" // 参数 } }); ``` 3. **动态刷新** 当参数变化时自动更新: ```javascript // 监听参数变化 contentPane.parameterEl.on("paramvaluechange", function(paramName) { if (paramName === "lastname") { var newValue = _g().getParameterValue("lastname"); console.log("新: " + newValue); } }); ``` ### 使用场景示例 ```javascript // 在按钮点击事件中获取参数 $("#btnGetParam").click(function() { var lastName = _g().getParameterValue("lastname"); // 验证参数 if (!lastName) { FR.Msg.alert("错误", "lastname 参数未设置"); return; } // 使用参数执行操作 contentPane.curLGP.setCellValue(0, 0, "尊敬的 " + lastName + " 先生/女士"); contentPane.refreshAllSheets(); }); ``` > **注意**:当参数包含特殊字符时,建议使用 `encodeURIComponent()` 处理[^2]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值