【问题标题】:Find index of EditorFor template查找 EditorFor 模板的索引
【发布时间】:2015-10-22 15:49:50
【问题描述】:

我有一个如下所示的 EditorFor 模板,

@{
Layout = null;

@Html.EditorFor(model => model.Name)
@Html.EditorFor(model => model.Value)

}

用于键/值对列表。这是模型。

public List<NameValuePair> Parameters { get; set; }

这会生成一个可编辑框的列表。我需要删除一个特定的元素(所以当页面刷新时,整个“行”都消失了)。我无法找到该元素的索引以传递给我的控制器中的删除函数。有没有一种简单的方法可以在 EditorFor 模板中找到特定索引?

更新--

这就是视图中的代码的样子。其中显示参数列表。

@Html.LabelFor(model => model.Parameters)
@Html.EditorFor(model => model.Parameters)
    <input type="submit" name="command" value="addParam" class="btn btn-default btn-primary" />

这就是我试图在控制器中使用的删除方法的样子。

public ActionResult DeleteParamaters(long id, int index)
    {
        var templateStep = Biz.GetTemplateStep(id);

        templateStep.Parameters.RemoveAt(index);
        return View("CreateTemplateStep", templateStep);
    }

我的最终目标是每个列表项旁边的删除按钮,点击后将从列表中删除该特定项。

【问题讨论】:

  • 你想过用javascript来做吗?
  • 我并不反对。但是我的JS技能并不是最好的。我会稍微研究一下。
  • 通常您会希望使用唯一 ID 而不是索引来处理此类事情。您不能将 ID 值与您的每个模型相关联吗?
  • 您不需要索引(如果使用EditorTemplate,则无法获取它)。显示您如何删除该项目。

标签: javascript c# html asp.net-mvc razor


【解决方案1】:

您可以将additionalViewValues 对象传递给EditorFor 函数。

一个匿名对象,可以包含额外的视图数据,这些数据将被 合并到创建的 ViewDataDictionary 实例中 为模板。

因此,当您遍历列表并为每个列表呈现编辑器时,您可以将任何数据传递给模板,这样您就可以将其发送到控制器以识别您的数据。

有几个关于如何跨模板使用附加数据的示例。例如:Pass Additional ViewData to a Strongly-Typed Partial View

【讨论】:

  • 这正是我所需要的。谢谢
猜你喜欢
  • 1970-01-01
  • 2019-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-14
  • 2012-06-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多