如何将Html.ActionLink的项目名称参数传递给Controller供图表视图使用
代码调整方案
1. 调整FirstView中的ActionLink代码
需要修正两个点:一是路由目标Action名称要和Controller里的方法名匹配,二是把项目名称作为参数传递,调整后代码如下:
@* 先获取当前项目名 *@ @var projectName = projectOverviewa.DisplayProject_Name_1; @* 第二个参数要和Controller的方法名一致,你原来写的ChartForProject和Controller里的SecondViewForChart不匹配,注意修正 *@ @Html.ActionLink("View", "SecondViewForChart", new { projectName = projectName })
2. 调整Controller的Action代码
直接通过方法参数绑定接收前端传递的项目名即可,不需要依赖Session:
// 方法参数名要和ActionLink里传递的参数名完全一致,ASP.NET MVC会自动完成参数绑定 public ActionResult SecondViewForChart(string projectName) { // 直接使用传递过来的项目名供图表调用 string getName = projectName; return View(); }
关于Session存储是否合适的说明
不建议用Session存储该参数,原因如下:
- 多标签页访问冲突:如果用户同时打开多个项目的图表页,后打开的项目名会覆盖Session中存储的值,导致先打开的页面图表数据错误
- 过期问题:Session有默认过期时间,用户保存对应页面的书签后过段时间访问,Session丢失会直接触发报错
- 设计合理性问题:单纯的页面跳转传参用URL查询参数即可,逻辑更简单清晰,也方便调试,用户还可以直接收藏对应项目的图表页面
内容的提问来源于stack exchange,提问作者fl13
相关产品推荐
相关产品推荐

