4

经过大量谷歌搜索、stackoverflowing(?)和博客阅读后,我仍然无法完全解决问题。希望这个专家社区可以来救援!

给定:具有字段 ICollection 的 Company 类(一个 Company 可以有多个地址)。每个地址都有几个简单的字符串字段。

简洁版本:

我希望用户能够向公司添加任意数量的地址。首先,我想显示一组地址文本框,然后显示“添加更多地址”按钮。Javascript 没有问题,而 mvc 部分。如果不清楚,功能应该与此类似: http ://www.mdelrosso.com/sheepit/index.php?lng=en_GB&sec=demo3

我需要使用 MVC EditorForModel() 函数,这意味着所有配置都需要进入编辑器模板。

目前状态:

  • 为编辑公司页面创建 ViewModel (CompanyViewModel)
  • 将 [UIHint("Addresses")] 添加到字段 public ICollection Addresses { get; 放; }
  • 创建地址编辑器模板

在 Addresses EditorTemplate 中,添加新公司时,传入的模型为 Null(这并不奇怪)。如何为额外地址创建编辑器?我尝试了多个化身(使用 Razor):

@Html.EditorFor(m => new Address());

但即使远程工作也无法生产任何东西。(上面的确切行给出了错误“模板只能用于字段访问、属性访问、单维数组索引或单参数自定义索引器表达式。”)

感谢您的任何指点!

/胜利者

4

1 回答 1

4

这是当前 API 的一个缺点。您可以这样做的一种方法是有一个负责生成插入表单的子操作

在您的控制器中:

[ChildActionOnly]
public ActionResult AddAddress() {
    return View(new Address()); // pass an instance so view works
}

添加新视图AddAddress.cshtml

@model Address
@Html.EditorForModel()

然后在您的编辑器模板中使用

@Html.Action("AddAddress")
于 2010-12-09T20:08:47.877 回答