我该如何设计这个页面?
请看这张照片:
我之间有一对多的关系。 人和地址。 这里的问题是它是一个“添加”forms,所以即使主记录也不在数据库中。 我该如何设计这个UI和实现? 如果此人在弹出窗口中单击“保存地址”,该怎么办? 我应该将该特定地址与哪个人联系起来? 在Asp.Net中我会将它存储在ViewState中,所以这个问题不会出现。 但是我如何做这个Asp.Net MVC 3.0? 我应该将它存储在Session中,然后当在主窗体上单击“save”时,我会从会话中检索所有地址并保存它。 这看起来是一种非常强硬的方法,因为如果这个人在两个标签中打开相同的表单怎么办? 我应该继续在子表单上创建隐藏字段并以CSV格式存储吗? 这有效,但会产生一个无用的JavaScript代码。
我希望我的问题清楚。 如果没有,请告诉我。 你如何在Asp.Net MVC中处理这个问题?
谢谢。
当用户在弹出窗口中单击“保存地址”时,使用一些javascript将条目添加到基础主页面,包括文本和包含数据的一组隐藏字段。 当表单最终回发时,这些隐藏的输入可以转换为主记录的相关数据。
完成后它会看起来像这样。
123 Street, Foo City, Idaho, 22222-2222 Delete ...
请注意,这假设您的视图模型在Address
类中具有名为Addresses
且具有相应属性的List
。 请注意,索引需要是连续的。 您可以使用一些javascript在表单提交时更新这些。
$('form').submit( function() { $('.address-start').each( function(idx) { var prefix = 'Addresses[' + idx + '].'; $(this).attr('name',prefix + 'Street') .next(':hidden') .attr('name',prefix + 'City' ) .next(':hidden') .attr('name',prefix + 'State' ) .next(':hidden') .attr('name',prefix + 'Zip' ); }); return true; });
另请注意,如果在编辑和使用类似的东西时执行此类操作,则可能需要将“ Deleted
属性添加到“ Address
类,并仅隐藏要删除的地址,同时将相应的“ Deleted
输入设置为值True
以便您知道它应该在post上删除。 我已经在这里展示了它没有索引,因为创建它们将按它们发生的顺序绑定。 在编辑时,如果添加一个,则可能需要为新元素计算正确的索引。
- 一个MVC表单上的多个表单,使用循环创建,只有第一个提交数据
- ASP.Net Identity如何设置目标DB?
- ASP.NET MVC 3.0的学习资料? 请列出!
- 将datetime2数据类型转换为日期时间数据类型会导致超出范围的值 – 不使用DateTime2
- 为什么我不能在两个使用StateServer的Web应用程序之间共享会话状态? 我错过了什么?
- ASP MVC:服务应该返回IQueryable吗?
- 如何在MVC 5中的单个Ajax POST请求中发送ViewModel和文件?
- System.Data.Entity中不存在Infrastucture
- 添加标头时在end_request中抛出exception