.net - 如何通过 @Html.EditorFor 将 ViewData 的值传递给编辑器模板

标签 .net asp.net-mvc razor viewdata

在强类型 View 中反对 @model System.Tuple<Person, List<Survey>>

我在 for-each 循环中使用:

  @Html.EditorFor(x => survey.Questions)

在“调查”中提出问题。它运行完美。

现在我还想将附加数据传递到自定义编辑器模板。我做了:

@Html.EditorFor(x => survey.Questions, new { htmlAttributes = new { PersonId = 1000 } })

然后在 Edtior 模板中我想引用这个 PersonId并显示它。

这是我制作的编辑器模板(用于问题的快捷方式):

  @using WebApplication2.Models
    @model   Question
    <div>
        @ViewData["PersonId"]
    </div>

但什么也没显示。

如何正确通过PersonId = 1000到此编辑器模板。

最佳答案

经过一番搜索后,发现了以下用于迭代嵌套属性的堆栈溢出答案。我无法使强制转换为“动态”工作,但使用反射正确检索了嵌套的匿名对象。 https://stackoverflow.com/a/13981462/1046155

但是,如果您决定仅使用 HTML 属性,则可以在动态对象中指定它们:

@Html.EditorFor(x => survey.Questions, new { PersonId = 1000, PersonName = "John", PersonAge=10, etc... })

并使用@ViewData在编辑器中访问它们:

<div>
     @ViewData["PersonId"]
     @ViewData["PersonName"]
     @ViewData["PersonAge"]
     etc...
</div>

关于.net - 如何通过 @Html.EditorFor 将 ViewData 的值传递给编辑器模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25631581/

相关文章:

c# - Realm :自增主键

c# - StreamReader/StreamWriter 的基本多线程

c# - 在 ASP.NET 中的中继器上使用 JQuery TableSorter 插件不起作用

c# - 如何使用 LINQ 对集合进行排序,以便首先出现特定字符串

c# - 动态表单创建 - XSD XML SQL

regex - 模型验证正则表达式从不匹配

c# - Views/Web.config 或 @using 都没有将 MVC 项目的命名空间添加到 View

asp.net-mvc - 如何将IEnumerable或可查询的属性列表从Controller传递到View

asp.net-mvc - 没有布局的 Razor View

asp.net-mvc - Razor 语法 - 在 Url.Content 中使用模型属性