2015-04-03 34 views
1

我是asp.net mvc的新手。在我的项目中,我必须添加一个表格,用户可以在其中输入详细信息并从下拉菜单中选择选项。当用户单击添加按钮时,必须将所有行(包括文本框,下拉列表)添加到表中。另外,当用户点击删除按钮时,必须从表格中删除特定的行。默认情况下,当页面加载时,我应该在表中有两行,包含所有必填字段。我需要解决以下问题在Asp.net mvc剃须刀视图中添加和删除动态表中的行

  1. 如何实现上述任务。
  2. 我还需要保存表格的详细信息。那么如何将表格细节传递给控制器​​呢?
  3. 当用户点击编辑按钮时保存细节后,我应该加载表中的所有细节。请帮我在这

我也搜索了很多,但没有一个例子包括动态表中的下拉选项。请帮助我完成这项任务。感谢所有的志愿者。

+0

一些选项用于动态添加和删除集合中的项目[这里](http://stackoverflow.com/questions/29161481/post-a-form-array-without-successful/29161796#29161796)和[这里] (http://stackoverflow.com/questions/28019793/submit-same-partial-view-called-multiple-times-data-to-controller/28081308#28081308) – 2015-04-06 05:05:00

回答

2

我建议使用史蒂夫·桑德森创建

http://blog.stevensanderson.com/2010/01/28/editing-a-variable-length-list-aspnet-mvc-2-style/

它达到你想要什么的BeginCollectionItem()帮手,他越过一步一步从一个工作示例。我在我的几个项目中使用过它。

+0

嗨你的链接是有帮助的,我也有其他领域的看法。如何将这些字段值传递给控制器​​。 – Vib 2015-04-06 14:50:50

+0

使用包含您的集合字段以及其他字段的ViewModel。使用博客中的示例,假设除了“礼物”集合之外,我们还想添加名称字段和日期字段。 我创建的示例小提琴:https://dotnetfiddle.net/lbi2Wb – Eckert 2015-04-06 20:16:32

+0

感谢您的示例。我需要为部分视图内的字段执行一些jquery函数。但是每次页面加载时,字段的id似乎都会变化。如何解决这个问题呢。任何解决方案都会对我有所帮助 – Vib 2015-04-07 08:54:02

0

我会在评论中留下一些链接,但我没有足够的代表。所以我会把这里作为答案,并且比我在评论中阐述的更多。但这只是一般信息。请提供更多具体答案的详细信息。

首先,您正在使用哪个版本的MVC?你的数据模型是什么样的?你在使用EntityModel吗?您是否考虑过客户端MVC或MVVM框架或库,如AngularJS或Knockout?

队伍对你这些问题的答案,答案你的问题可能是...

  1. 创建数据模型类,并开始data annotations装饰它。 您希望出现在表格中的每一列应作为公共财产公开。这可以驱动一个code first DB approach。或者,你可以从现有的数据库建立一个EntityModel。如果您打算这么做,则可能需要修改T4 templates used by the EF wizard,将数据注释添加到生成的实体模型。
  2. 您可以使用开箱即用的scaffolding to generate razor templates for CRUD operations。然后你可以使用你的新T4技能modify the scaffolding templates
  3. 考虑将WebAPI和/或SignalR与客户端框架结合使用,以提供RESTful API或持久连接,其中任何一个都可用于在客户端和服务器之间同步应用程序级别的数据。

这似乎是一个很好的开销,但如果您要最大限度地使用Razor视图,可以为您节省大量时间。

尽管您可能只想在大部分时间与客户端交换应用程序级别的数据。您可以使用像AngularJS这样的框架构建客户端体系结构,或者围绕像Knockout这样的库构建自己的框架,以绑定到数据,并允许标记(例如,AngularJS中的自定义指令模板)实际上成为通过客户端控制器生成和渲染。

对于一个开源,标准化的外观和感觉,我建议您考虑一下Boostrap的设置,以便相对容易地使用组件和布局/样式约定。您可以使用它准系统或将其与其他js库,like this合并。

+0

嗨感谢您的答复,我正在使用mvc 4。其实我使用web服务来存储和检索数据库。请通过适当的解决方案提供帮助 – Vib 2015-04-03 15:51:37

+0

您是否被迫使用MVC 4?如果没有,为什么不从5开始,甚至不看6?但是,如果你有一个现有的Web服务api,并且你依赖于服务器端验证,那么你真正需要的是一个客户端应用程序。如果你走这条路线,你会想看看[客户端MVC框架](http://paulhammant.com/2012/02/13/client-side-mvc-frameworks-compared/)。只需让客户端控制器通过对现有Web服务的Ajax调用来检索数据。 – 2015-04-03 21:22:17

相关问题