gpt4 book ai didi

controls - mvc显示模板中当前项目的索引

转载 作者:行者123 更新时间:2023-12-02 20:07:31 25 4
gpt4 key购买 nike

我有一个带有显示模板的 mvc 页面。如何获取显示模板中呈现的当前项目的索引。它在名称属性中产生正确的可绑定(bind)结果。

<input name="xxx[0].FirstName"/>
<input name="xxx[1].FirstName"/>

我希望在显示模板中显示该索引值。它在 ViewContext 的某个地方吗?

@* page.cshtml @@model ...@ 属性 Contacts 是 IEnumerable *@

<table id="contacts" class="editable">
<thead>
<tr><th>Name</th><th>Surname</th><th>Contact Details</th></tr>
</thead>

<tbody>
@Html.DisplayFor(x => x.Contacts)
</tbody>

在显示模板中我们有

@* contact.cshtml *@
@model ...@* This is the T of the IEnumerable<T> *@

<tr>
@* I NEED THE INDEX OF THE CURRENT ITERATION HERE *@
<td>@Html.DisplayFor(x => x.FirstName)</td>
</tr>

最佳答案

恐怕没有简单的方法来获取索引。它埋在内部 System.Web.Mvc.Html.DefaultDisplayTemplates.CollectionTemplate方法并没有暴露。您可以使用字段前缀:

@ViewData.TemplateInfo.HtmlFieldPrefix

另一种可能性是替换 @Html.DisplayFor(x => x.Contacts)与:

@for (int i = 0; i < Model.Contacts.Length; i++)
{
@Html.DisplayFor(x => x.Contacts[i], new { Index = i })
}

然后在模板内@ViewBag.Index应该给你当前的索引,但我必须承认它有点难看。

关于controls - mvc显示模板中当前项目的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4814308/

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