【问题标题】:Pass a ViewBag instance to a HiddenFor field in Razor将 ViewBag 实例传递给 Razor 中的 HiddenFor 字段
【发布时间】:2015-02-11 22:50:21
【问题描述】:

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

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

【问题讨论】:

  • 您的模型是否有属性PortfolioId?我假设你不明白@Html.HiddenFor() - 第二个参数是用于呈现 html 属性

标签: asp.net asp.net-mvc razor html.hiddenfor


【解决方案1】:

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

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

@Html.Hidden("id", (string)ViewBag.PortfolioId)

【讨论】:

  • 这里使用字符串“id”作为隐藏的输入id和name属性。
【解决方案2】:

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

<input type="hidden" name="PortfolioId" id="PortfolioId" value="@ViewBag.PortfolioId" />

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 2023-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-20
      • 1970-01-01
      • 2012-01-11
      • 1970-01-01
      相关资源
      最近更新 更多