如何在using语句中使用ViewBag?

zgi*_*rod 2 asp.net-mvc razor asp.net-mvc-3

我正在尝试使用ViewBag在部分页面中显示表单的操作.

我尝试过以下方法:

@using(Html.BeginForm(ViewBag.Action, "Person", FormMethod.Post)
@using(Html.BeginForm((ViewBag.Action), "Person", FormMethod.Post)
@using(Html.BeginForm(@(ViewBag.Action), "Person", FormMethod.Post)
@using(Html.BeginForm({ViewBag.Action}, "Person", FormMethod.Post)
Run Code Online (Sandbox Code Playgroud)

但这些都不起作用.什么是正确的语法?

mar*_*ind 9

尝试

@using(Html.BeginForm((string)ViewBag.Action, "Person", FormMethod.Post)
Run Code Online (Sandbox Code Playgroud)


Dre*_*kes 5

问题是ViewBag是 类型dynamic,因此 因此ViewBag.Action也是 类型dynamic- 至少编译器是这么认为的。

因此,将其转换为字符串将为编译器提供缺失的信息。如果它实际上不是一个字符串,那么你会得到一个运行时异常,但至少代码会正确编译:

@using(Html.BeginForm((string)ViewBag.Action, "Person", FormMethod.Post)
Run Code Online (Sandbox Code Playgroud)