热门标签 | 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

推荐阅读
  • Ext JS MVC系列一:环境搭建与框架概览
    本文主要介绍了如何在项目中使用Ext JS 4作为前端框架,并详细讲解了Ext JS 4的MVC开发模式。文章将从项目目录结构、相关CSS和JS文件的引用以及MVC框架的整体认识三个方面进行总结。 ... [详细]
  • 在JavaWeb开发中,文件上传是一个常见的需求。无论是通过表单还是其他方式上传文件,都必须使用POST请求。前端部分通常采用HTML表单来实现文件选择和提交功能。后端则利用Apache Commons FileUpload库来处理上传的文件,该库提供了强大的文件解析和存储能力,能够高效地处理各种文件类型。此外,为了提高系统的安全性和稳定性,还需要对上传文件的大小、格式等进行严格的校验和限制。 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统
    技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统 ... [详细]
  • 深入解析Struts、Spring与Hibernate三大框架的面试要点与技巧 ... [详细]
  • 在处理大规模数据数组时,优化分页组件对于提高页面加载速度和用户体验至关重要。本文探讨了如何通过高效的分页策略,减少数据渲染的负担,提升应用性能。具体方法包括懒加载、虚拟滚动和数据预取等技术,这些技术能够显著降低内存占用和提升响应速度。通过实际案例分析,展示了这些优化措施的有效性和可行性。 ... [详细]
  • ### 优化后的摘要本学习指南旨在帮助读者全面掌握 Bootstrap 前端框架的核心知识点与实战技巧。内容涵盖基础入门、核心功能和高级应用。第一章通过一个简单的“Hello World”示例,介绍 Bootstrap 的基本用法和快速上手方法。第二章深入探讨 Bootstrap 与 JSP 集成的细节,揭示两者结合的优势和应用场景。第三章则进一步讲解 Bootstrap 的高级特性,如响应式设计和组件定制,为开发者提供全方位的技术支持。 ... [详细]
  • Python 伦理黑客技术:深入探讨后门攻击(第三部分)
    在《Python 伦理黑客技术:深入探讨后门攻击(第三部分)》中,作者详细分析了后门攻击中的Socket问题。由于TCP协议基于流,难以确定消息批次的结束点,这给后门攻击的实现带来了挑战。为了解决这一问题,文章提出了一系列有效的技术方案,包括使用特定的分隔符和长度前缀,以确保数据包的准确传输和解析。这些方法不仅提高了攻击的隐蔽性和可靠性,还为安全研究人员提供了宝贵的参考。 ... [详细]
  • 在处理木偶评估函数时,我发现可以顺利传递本机对象(如字符串、列表和数字),但每当尝试将JSHandle或ElementHandle作为参数传递时,函数会拒绝接受这些对象。这可能是由于这些句柄对象的特殊性质导致的,建议在使用时进行适当的转换或封装,以确保函数能够正确处理。 ... [详细]
  • 在Java分层设计模式中,典型的三层架构(3-tier application)将业务应用细分为表现层(UI)、业务逻辑层(BLL)和数据访问层(DAL)。这种分层结构不仅有助于提高代码的可维护性和可扩展性,还能有效分离关注点,使各层职责更加明确。通过合理的设计和实现,三层架构能够显著提升系统的整体性能和稳定性。 ... [详细]
  • 在实际开发中,连接池是最常使用的数据库管理技术之一。连接池通过创建和管理一组预初始化的数据库连接,使得这些连接可以被多个线程复用,从而显著提高应用程序的性能和资源利用率。本文将详细介绍如何从零开始构建一个自定义的 MySQL 连接池,并将其与 Spring Data 进行集成,以实现高效、可靠的数据库操作。 ... [详细]
  • Spring框架中的面向切面编程(AOP)技术详解
    面向切面编程(AOP)是Spring框架中的关键技术之一,它通过将横切关注点从业务逻辑中分离出来,实现了代码的模块化和重用。AOP的核心思想是将程序运行过程中需要多次处理的功能(如日志记录、事务管理等)封装成独立的模块,即切面,并在特定的连接点(如方法调用)动态地应用这些切面。这种方式不仅提高了代码的可维护性和可读性,还简化了业务逻辑的实现。Spring AOP利用代理机制,在不修改原有代码的基础上,实现了对目标对象的增强。 ... [详细]
  • 本教程详细介绍了如何使用 Spring Boot 创建一个简单的 Hello World 应用程序。适合初学者快速上手。 ... [详细]
  • 如何在Java中使用DButils类
    这期内容当中小编将会给大家带来有关如何在Java中使用DButils类,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。D ... [详细]
  • 第二十五天接口、多态
    1.java是面向对象的语言。设计模式:接口接口类是从java里衍生出来的,不是python原生支持的主要用于继承里多继承抽象类是python原生支持的主要用于继承里的单继承但是接 ... [详细]
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社区 版权所有