热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MVC,实体保存问题

实体Index,属性有ID,Content,CreateDate实体Detail,属性有ID,IndexID,CargoName其中,实体Detail中的IndexID是外键。Deta
实体Index,属性有ID,Content,CreateDate

实体Detail,属性有ID,IndexID,CargoName

其中,实体Detail中的IndexID是外键。Detail和Index是多对一关系。

问题,我先描述一下。
若只需要保存Index的数据,那么视图上放3个对应的控件,名称与字段名一致,保存时序列化成ID=1&COntent=2&CreateDate=2012-08-15,传入控制器中。
而控制器中的保存方法,参数是Index实体的实例。会将序列化数据转换成Index实体,而后只需要新增该实体即可。
如:
function saveIndex() {
        if ($('#fm').valid()) {
            $.post(url, $("#fm").serialize() + '&' + $("#fm").serializeDisabled(), function (result) {
                if (result.success) {
                    $.messager.alert('提示', '数据已保存!');
                    Javascript: $('#dlg').dialog('close')
                    $('#dg').datagrid('reload'); // 刷新数据
                } else {
                    $.messager.alert('提示', '数据保存出现错误!', 'error');
                }
            }, 'json');
        }
    }


/// 
        /// 新建-保存
        /// 

        /// 
        /// 
        [HttpPost]
        public ActionResult Create(Index index)
        {
            try
            {
                IndexRepository.Insert(index);
                return Json(new { success = true });
            }
            catch (Exception e)
            {
                return Json(new { msg = "服务出现错误." });
            }
        }


但是现在,视图中的控件,不仅仅是Index实体的,也有Detail实体的(就是那个CargoName)。
我希望控制器中的保存方法中的参数是Index index,List detail,然后先新增index,返回新增后的主键ID,再循环赋值给detail中的IndexID字段,最后新增detail。

关键问题,js中还是把控件序列化,再传入控制器吗?
如果是这样,那控制器中该怎么写?如果不是,请问js和控制分别该怎么写?

以及怎么获得“刚新增”的记录的主键ID?

分不多,只有40分,希望能有人帮助我解开这个疑惑。先谢谢了。

7 个解决方案

#1


/// 
        /// 新建-保存
        /// 

        /// 
        /// 
        [HttpPost]
        public ActionResult Create(类 类名)
        {
            try
            {
                IndexRepository.Insert(index);
                return Json(new { success = true });
            }
            catch (Exception e)
            {
                return Json(new { msg = "服务出现错误." });
            }
        }

使用jquery forms 插件
的ajaxSumit提交

#2


你可以搞一个综合性的实体来接受,单独定义一个,根据你的需要

当你
db.BIF.AddObject(model);
db.SaveChanges();
之后,该model已经更新

此时model.ID就是刚刚插入的ID

#3


引用 1 楼  的回复:
/// 
        /// 新建-保存
        /// 

        /// 
        /// 
        [HttpPost]
        public ActionResult Create(类 类名)
  ……


是你没理解我的问题吗?
现在是2个类,你的参数里只有1个类,能干嘛~

#4


引用 2 楼  的回复:
你可以搞一个综合性的实体来接受,单独定义一个,根据你的需要

当你
db.BIF.AddObject(model);
db.SaveChanges();
之后,该model已经更新

此时model.ID就是刚刚插入的ID


噢,用综合性的实体,这个可以。但是这种情况,也就是主从表的情况,每次都得建立综合性的实体吗?

另外,获取ID我明白了,谢谢你啊。

#5


#6


单独的model,如果是EF的话,完全可以用映射来的表模型,不必创建

如果有特殊需要,那么可以考虑创建一个符合需求的Model,你比如说,有张表,字段太多,那么我的需求是更新其中 的某几个字段,那么可以搞一个小型的Model,保证页面在提交请求时的模型最小话

当然,如果一个页面涉及到多个实体模型,那么可以采用综合性model的方式,也可以分成不同的表单,然后分别提交,互不影响,都是以个人需求而定

#7


非常感谢 Return_false
问题解决了,不过有新的问题出现,我重开个帖子吧,多用点分~
新帖地址:http://topic.csdn.net/u/20120815/13/55d36e19-c8cd-4f5e-9af4-6956a384b3cc.html

推荐阅读
  • 我将SpringMVC升级到Spring3.2.5.我的一些剩余调用即使存在,也会返回无法识别的字段异常.这是错误.Resolvingexceptionfrom ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 本文讨论了如何在codeigniter中识别来自angularjs的请求,并提供了两种方法的代码示例。作者尝试了$this->input->is_ajax_request()和自定义函数is_ajax(),但都没有成功。最后,作者展示了一个ajax请求的示例代码。 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • uniapp开发H5解决跨域问题的两种代理方法
    本文介绍了uniapp开发H5解决跨域问题的两种代理方法,分别是在manifest.json文件和vue.config.js文件中设置代理。通过设置代理根域名和配置路径别名,可以实现H5页面的跨域访问。同时还介绍了如何开启内网穿透,让外网的人可以访问到本地调试的H5页面。 ... [详细]
  • 本文介绍了Sencha Touch的学习使用心得,主要包括搭建项目框架的过程。作者强调了使用MVC模式的重要性,并提供了一个干净的引用示例。文章还介绍了Index.html页面的作用,以及如何通过链接样式表来改变全局风格。 ... [详细]
  • 从零基础到精通的前台学习路线
    随着互联网的发展,前台开发工程师成为市场上非常抢手的人才。本文介绍了从零基础到精通前台开发的学习路线,包括学习HTML、CSS、JavaScript等基础知识和常用工具的使用。通过循序渐进的学习,可以掌握前台开发的基本技能,并有能力找到一份月薪8000以上的工作。 ... [详细]
  • 本文介绍了Java后台Jsonp处理方法及其应用场景。首先解释了Jsonp是一个非官方的协议,它允许在服务器端通过Script tags返回至客户端,并通过javascript callback的形式实现跨域访问。然后介绍了JSON系统开发方法,它是一种面向数据结构的分析和设计方法,以活动为中心,将一连串的活动顺序组合成一个完整的工作进程。接着给出了一个客户端示例代码,使用了jQuery的ajax方法请求一个Jsonp数据。 ... [详细]
  • 本文讨论了在shiro java配置中加入Shiro listener后启动失败的问题。作者引入了一系列jar包,并在web.xml中配置了相关内容,但启动后却无法正常运行。文章提供了具体引入的jar包和web.xml的配置内容,并指出可能的错误原因。该问题可能与jar包版本不兼容、web.xml配置错误等有关。 ... [详细]
  • Allegro总结:1.防焊层(SolderMask):又称绿油层,PCB非布线层,用于制成丝网印板,将不需要焊接的地方涂上防焊剂.在防焊层上预留的焊盘大小要比实际的焊盘大一些,其差值一般 ... [详细]
  • 一、Struts2是一个基于MVC设计模式的Web应用框架在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts2优点1、实现 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • 如何查询zone下的表的信息
    本文介绍了如何通过TcaplusDB知识库查询zone下的表的信息。包括请求地址、GET请求参数说明、返回参数说明等内容。通过curl方法发起请求,并提供了请求示例。 ... [详细]
author-avatar
心语忆录_288
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有