在针对@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
传递给此EditorTemplate。
答案 0 :(得分:15)
经过一番搜索后发现了以下堆栈溢出的答案,用于迭代嵌套属性。我无法将演员阵容变为&#34;动态&#34;工作,但使用反射正确检索嵌套的匿名对象。 https://stackoverflow.com/a/13981462/1046155
但是,如果您只想传递HTML属性,则可以按顺序指定它们:
@Html.EditorFor(x => survey.Questions, new { PersonId = 1000, PersonName = "John", PersonAge=10, etc... })
通过以下方式在编辑器中访问它们:
<div>
@ViewData["PersonId"]
@ViewData["PersonName"]
@ViewData["PersonAge"]
etc...
</div>
答案 1 :(得分:2)
尝试:
@ViewData["htmlAttributes"]["PersonId"]
外部匿名对象填充ViewData
。但是,如果您使用上述内容,则需要注意在尝试引用“PersonId”之前检查ViewData["htmlAttributes"]
是否确实存在。
答案 2 :(得分:2)
似乎您尚未设置ViewData
。您需要在控制器中设置返回此视图的ViewData
。只需ViewData["PersonId"] = 10