gpt4 book ai didi

c# - 如何在 ASP.NET MVC 中获取模型的 HtmlHelper 实例?

转载 作者:太空狗 更新时间:2023-10-29 21:52:20 26 4
gpt4 key购买 nike

假设我有一个索引 View 。我传入的模型实际上是模型的集合,所以 Html属性类型为 HtmlHelper<List<MyModel>> .如果我想调用扩展方法(例如,Display()DisplayFor() 在列表中的单个项目上,但是,我认为我需要获得一个 HtmlHelper<MyModel>。但是如何?

我尝试使用 HtmlHelper<TModel>构造函数,看起来像这样:

HtmlHelper<TModel>(ViewContext, IViewDataContainer)

但我没有任何运气。我不知道如何获得 IViewDataContainer对于该项目,关于这些东西的文档非常稀少。

当我这样做时,显然会发生很多魔法......

return View(List<MyModel>);

...在我的 Controller 中。

如何在列表/集合中的单个项目上重现这种魔力?

更新

这是一个代码片段来展示我正在努力完成的事情:

        foreach(var item in items)
{
var helper = new HtmlHelper<ProjName.MyModel>(ViewContext, ????);
%>
<tr>
<%
foreach(var property in properties)
{
%>
<td>
<%= helper.Display(property.DisplayName) %>
</td>
<%
}
%>
</tr>
<%
}

基本上,我想使用集合中的项目填充表格的单元格。我只需要帮助设置 helper变量。

最佳答案

一个想法是使用 RenderPartial。因此,创建一个具有您的模型类型 (MyModel) 的用户控件。然后在您的主视图中,添加以下代码。

<% Html.RenderPartial("SubView", property); %>

所以主视图看起来像:

 foreach(var item in items) 
{
%>
<tr>
<%
foreach(var property in properties)
{
%>
<td>
<%= Html.RenderPartial("SubView", property) %>
</td>
<%
}
%>
</tr>
<%
}
%>

那么 subview 将是 类型的强类型用户控件。 subview 然后可以调用助手,它将是正确的类型:

<%= Html.Display(Model.DisplayName) %>

关于c# - 如何在 ASP.NET MVC 中获取模型的 HtmlHelper<TModel> 实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2541186/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com