我可以在webgrid列ActionLink格式中使用@Viewbag ...而不是硬编码名称

时间:2017-07-13 05:19:56

标签: asp.net-mvc razor webgrid actionlink

我有几个要链接的页面,具体取决于用户级别。 示例:级别1转到pageA,级别2转到pageB等。 在控制器内部,我将Viewbag.page设置为哪个页面。

当webgrid创建下面的列时,有没有办法用Viewbag.page的内容替换“actionName”?

@grid.GetHtml(
columns: grid.Columns(
grid.Column("filename", format: @<text> @Html.ActionLink((string)item.filename, "actionName", "controllerName", new { id = item.id}, null) </text> ),

1 个答案:

答案 0 :(得分:1)

如果您从控制器重定向,那么最好选择TempData而不是ViewBag,因为ViewBag在POST后将为null。

这是一个在cshtml中使用动态数据的代码片段:

@{ 

var actionName = TempData["actionName"];
}

@Html.ActionLink((string)item.filename, actionName, "controllerName", new { id = item.id }, null) )

你应该根据你的等级从控制器设置TempData["actionName"];的值。