6

使用 ASP.NET MVC 和 Razor,我试图将 ViewBag 项从控制器传递到 HiddenFor 字段(使用 Razor)。我收到以下消息:扩展方法不能通过动态调度。

  @Html.HiddenFor(m=>m.PortfolioId, ViewBag.PortfolioId);
4

3 回答 3

23

您收到此错误是因为 ViewBag 是动态类型。您可以使用 ViewModel 代替 ViewBag 来解决这个问题。

或者,您可以按照 iceburg 的建议使用以下或纯 html:

@Html.Hidden("id", (string)ViewBag.PortfolioId)
于 2014-12-13T10:13:22.573 回答
2

我不确定如何使用帮助程序来完成此操作,但您可以使用纯 html 实现相同的标记:

<input type="hidden" name="PortfolioId" id="PortfolioId" value="@ViewBag.PortfolioId" />
于 2014-12-13T08:42:08.680 回答
1

@Html.HiddenFor(i =>i.PortfolioId, htmlAttributes: new { @Value = ViewBag.PortfolioId })

如果您的“PortfolioId”确实是一个属性模型,将解决您的问题。

于 2020-12-07T11:17:36.620 回答