【发布时间】:2013-05-07 15:35:57
【问题描述】:
我有一个看起来像这样的模型:
商业 - 分支 - 电话(*) - 电话类型 - 数字 - 营业时间 (*) - 一周中的几天 - 工作时间(*) - 从时间 - 时间 - 自定义字段 (*) - 姓名 - 价值 - 地址 - 地址栏 - 城市 - 状态 - 压缩 ——雅达雅达我为上面的每个类类型创建了编辑器模板。
我想要一个通用的Business 编辑器模板,它带有一个提交表单,可以将整个结构发布到单个操作并保存它,无论是用于现有实体还是新实体。
- 编辑器模板是正确的方法吗?如何沿着整个下线提交表单?
- 如何使 Add 和 Remove 按钮在表单中添加/删除电话号码?
- 如何订购集合中的项目(即我希望每个电话号码附近都有箭头,以便用户可以在客户端列表中向上或向下移动它,然后处理服务器上的保存,因为我已经有了解决方案)。
底线,我的问题是如何将正确的值发回服务器,以及如何修改客户端上的内部集合。一旦正确的数据以这种或其他方式在服务器上,我就会知道如何处理它。我的问题是客户端和数据提交的正确方式。
更新
我看到了this 的答案,它基本上回答了我问题的第一部分,但后两个仍然存在(添加-删除-订单按钮 - 管理客户端上的集合)。
我的问题不是 如何在客户端的 DOM 中添加/删除/重新排序行,但是如何修改客户端数据,然后在操作中在服务器中接收它,如下所示:
[HttpPost]
public ActionResult Save(Business business)
{
/// blah blah
}
更新
这是我尝试插入新数据的方法:
查看:
@Ajax.ActionLink("Add", "AddCustomField", new AjaxOptions { UpdateTargetId = "customFields", InsertionMode = InsertionMode.InsertAfter })
行动:
public PartialViewResult AddOpeningTimes()
{
var ot = new OpeningTimes();
ot.WorkingPeriods.Add(new WorkingPeriod());
var e = EditorFor(ot);
//just here for debugging, the values are both empty strings
e.ViewData.TemplateInfo.HtmlFieldPrefix = ViewData.TemplateInfo.HtmlFieldPrefix;
return e;
}
//this method is on the base controller:
protected PartialViewResult EditorFor<TModel>(TModel model)
{
return PartialView("EditorTemplates/" + typeof(TModel).Name, model);
}
问题是 name 没有根据需要枚举适当的字段 (Branches[0].CustomField[0].Key),而是只是 Key。
【问题讨论】:
标签: asp.net-mvc razor http-post form-submit