如何在 ASP.NET MVC 5 中插入主从表

2024-02-05

I have Orders表和订单详细信息数据库中的表。通过 Entity Framework 6,我获得了一个模型,因此我可以从它生成类。我还从 Orders 表生成了控制器和视图。

Orders
folio (PK)
date
customer (FK)

OrdersDetail
folio (FK) -- to the Orders table
product (FK)
price
quantity 

生成的 Create Post 操作如下:

[HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Create([Bind(Include = "folio,date,customer")] Orders order)
        {

            if (ModelState.IsValid)
            {
                db.Orders.Add(order);
                db.SaveChanges();
                return RedirectToAction("Index");
            }

            ViewBag.cliente = new SelectList(db.CATCTES, "COD_CTE", "NOM_CTE", order.cliente);

            return View(order);
        }

没关系,但我也需要插入到其他实体/表! 我已经更改了 Create.cshtml 表单,其中包含 Orders 表所需的字段,并包括 OrdersDetail 的某种网格。每一行都是 OrdersDetail 表的一个新条目。

问题是我不知道如何正确保存到订单控制器的创建操作中的另一个表。如果这不是正确的方法,请告诉我您的意见。

另一个问题是关于 POSTing,我应该如何命名要正确分组的输入并在控制器上使用提交的值?当我单击表单上的“+”按钮时,该脚本会生成每一行:

@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
    <script>
        function add_row() {
            var detalle = $('#detalle');
            var newRow = '<tr>' + 
                            '<td data-title="Product">' +
                              '<div class="input-group">' +
                                '<span class="input-group-addon"></span>' +
                                  '<input class="form-control" type="number" aria-label="Product" name="detail_array[].product" step="0.001" min="0.000" onchange="cambiar_importe(this)" required="true">' +
                              '</div>' +
                            '</td>' +
                            '<td data-title="Price" >' +
                              '<div class="input-group">' +
                                '<span class="input-group-addon">$</span>' +
                                  '<input type="number" class="form-control" aria-label="Price" name="detail_array[].price" onchange="cambiar_importe(this)" step="0.001" min="0.000" required="true">' +
                              '</div>' +
                            '</td>' +
                            '<td data-title="Quantity">' +
                              '<div class="input-group">' +
                                '<span class="input-group-addon">$</span>' +
                                  '<input type="text" class="importe form-control" aria-label="Quantity" name="detail_array[].quantity" step="0.001" min="0.000" readonly="true" >' +
                              '</div>' +
                            '</td>' +
                            '<td data-title=""><button type="button" class="btn btn-danger btn-sm" onclick="borrar_renglon(this)">Cancelar</button></td>' +
                          '</tr>';

            detalle.append(newRow);
        }

    </script>
}

我认为你应该使用 Ajax。

在您的视图中,您有网格部分,每次添加记录时,您都必须使用 Ajax post 表单将值发布到服务器:

@using (Ajax.BeginForm("AddDetails", new AjaxOptions { UpdateTargetId = "gridContainerElementId" }))
{
  @Html.HiddenFor(m => m.folio)
  @Html.HiddenFor(m => m.product)
  @Html.TextBox(m => m.price)
  @Html.TextBox(m => m.quantity)
  <input type = "submit" value = "Save"/>
}

注意:将网格放入 'gridContainerElementId' div 中,如下所示:

<div id="gridContainerElementId">
  @Html.Action("DetailsGridPartial", new { OrderId = Model.folio })
</div>

在你的控制器中

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult AddDetails(OrdersDetail orderDetails)
{
   if (ModelState.IsValid)
   {
      db.OrdersDetail.Add(orderDetails);
      db.SaveChanges();

      return RedirectToAction("DetailsGridPartial", new { OrderId =  orderDetails.folio });
   }
   return View(order);
}

public ActionResult DetailsGridPartial(int OrderId)
{
      var orderDetails = db.OrdersDetail.Where(w => w.folio == OrderId);
      return PartialView(orderDetails);
}

您需要创建新视图来显示网格:

@model IEnumerable<OrdersDetail>
@Html.YourHelper.Grid(model).Html() @*or however you build the grid*@

在这种情况下,您不需要通过新记录手动填充网格,网格将自动刷新。

我希望这有帮助

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 ASP.NET MVC 5 中插入主从表 的相关文章

  • 从 .Net 将简单数据插入 Excel 文件的最简单方法

    我有一个 Excel 文件 大约有 10 列和 1 20 行 我需要插入 1 20 行包含各种数据元素 我想知道是否有一种方法可以将一些标签放入 Excel 文件中 以便可以找到并替换它们 将列标记为 名称 的东西 这样我就可以在代码中说
  • 当我尝试使用 AVX 功能时,Clang 生成错误

    我使用的是 Windows 10 使用 Clang 版本 5 最近安装 当我编译以下内容时 define AVX define AVX2 include
  • 将占位符文本添加到文本框

    我正在寻找一种将占位符文本添加到文本框的方法 就像在 html5 中使用文本框一样 IE 如果文本框没有文本 则会添加文本Enter some text here 当用户单击它时 占位符文本消失并允许用户输入自己的文本 如果文本框失去焦点并
  • 如何在 C++ 的子目录中创建文件?

    这是我的代码 如何在子目录联系人中创建文件 每次创建该文件时 它都会出现在与我的程序相同的目录中 int main ofstream myfile contacts myfile open a myfile close 在构造函数中指定完整
  • 未定义异常变量时通过引用捕获

    捕获异常时 标准指导是按值抛出 按引用捕获 据我了解 这有两个原因 如果由于内存不足异常而引发异常 我们将不会调用可能终止程序的复制构造函数 如果异常是继承层次结构的一部分 我们可能会对异常进行对象切片 如果我们有一个场景 我们没有在 ca
  • C++ 析构函数:何时释放内存?

    如果我删除一个导致其析构函数被调用的对象 那么内存是在析构函数完成函数中的任何操作之前还是之后被释放 仅当最小派生类子对象被销毁后才会释放内存 所以如果你有 class Base class Derived public Base publ
  • ASP MVC 5 - 403 customError 不起作用

    我正在尝试为我的应用程序创建自定义错误页面 它在大部分情况下都有效 但不适用于403 errors 我的网络配置
  • 从 ef core 的子集合中删除一些项目

    我有一个父表和子表 其中父表与子表具有一对多关系 我想删除一些子项 并且希望父项的子集合反映该更改 如果我使用删除选定的子项RemoveRange 那么子集合不会更新 如果我使用Remove从子集合中删除子集合然后 显然 它不如使用效率高R
  • 基于 C++ 范围的 for 循环

    尝试使用基于范围的 for 循环执行某些操作 可以使用常规的 for 循环来完成 如下所示 vector
  • 如何使用 C# 代码使用超链接的 onClick 事件?

    我正在尝试为页面中的超链接添加条件 而不是仅仅使用特定的链接 例如 a href help Tutorial html Tutorial a 我想为不同的用户显示不同的页面 例如 如果用户以管理员身份登录 他们将看到与普通用户不同的链接 我
  • IEnumerable.比带中断的 for 循环更快吗?

    我们的代码打开表单时遇到了一些缓慢的情况 这可能是由于for循环与break这需要很长时间才能执行 我把它切换到IEnumerable Any 并看到表格很快打开 我现在试图弄清楚是否单独进行此更改会提高性能 或者是否正在访问Product
  • jQuery AJAX post 收到 405 错误(不允许 HTTP 动词 POST)

    我有以下 jQuery 帖子到 ASP NET webmethod ajax type POST url AjaxWebMethods aspx UpdNote contentType application json charset ut
  • 函数模板重载解析期间的 MSVC 与 Clang/GCC 错误,其中一个函数模板包含参数包

    当我使用参数包时 我注意到这样一种情况 如下所示 在 gcc 和 clang 中编译得很好 但在 msvc 中却不行 template
  • 使 C# 编译器相信执行将在成员返回后停止

    我认为目前这是不可能的 或者这是否是一个好主意 但这是我刚才正在考虑的事情 我使用 MSTest 对我的 C 项目进行单元测试 在我的一项测试中 我执行以下操作 MyClass instance try instance getValue
  • 向每个收件人发送一封包含不同内容的电子邮件(使用抄送字段)

    在你因为这个问题 毫无意义 和 不可能 而驳回之前 请听我说完 问题 我们在使用我们的系统发送的每封电子邮件中实施跟踪像素 即具有唯一 URL 的可下载 GIF 文件 这有助于我们跟踪电子邮件的打开情况 问题是 当我们抄送一些收件人时 跟踪
  • 统一;随机物体移动[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在制作一款机器人战斗游戏 我希望敌人随机移动 然后有时会向敌人移动 我希望运动包含在其中的代码 else if avoid fal
  • 获取大于某个数字的元素个数

    我正在尝试解决以下问题 数字被插入到容器中 每次插入数字时 我需要知道容器中有多少元素大于或等于当前插入的数字 我相信这两个操作都可以以对数复杂度完成 我的问题 C 库中有标准容器可以解决这个问题吗 我知道std multiset可以在对数
  • 无效的模板相关成员函数模板推导 - 认为我正在尝试使用 std::set

    我有一个继承自基类模板的类模板 基类模板有一个数据成员和一个成员函数模板 我想从我的超类中调用它 我知道为了消除对成员函数模板的调用的歧义 我必须使用template关键字 我必须明确引用this在超级班里 this gt base mem
  • Visual Studio 2015默认附加库

    当我在 VS 2015 中创建一个空项目时 它会自动将这些库放入 附加依赖项 中 kernel32 lib user32 lib gdi32 lib winspool lib comdlg32 lib advapi32 lib shell3
  • 如何设置 Swashbuckle 与 Microsoft.AspNetCore.Mvc.Versioning

    我们有asp net core webapi 我们添加了Microsoft AspNetCore Mvc Versioning and Swashbuckle拥有招摇的用户界面 我们将控制器指定为 ApiVersion 1 0 Route

随机推荐

  • 类型参数声明中的无形状解构元组

    我正在使用返回 Tuple2 的 RightFolder 并希望返回 1部分 第一个版本rightFoldUntupled1工作正常但使用额外的IsComposite类型类 在第二个版本中rightFoldUntupled2我尝试在不使用的
  • 类型参数不受 impl 特征、自身类型或谓词的约束

    我正在尝试实现类型的特征 以便对类型的引用可以转换为迭代器Item实施特定特征 具体来说 考虑以下代码 struct Arena pub trait Scan fn scan self arena mut Arena impl lt a b
  • 如何使用 SQL Server 配置 Passportjs?

    我正在编写一个基于的应用程序SQL服务器 https www npmjs com package mssql ExpressJs NodeJS AngularJs 我是一个快速初学者 我需要处理会话 所以我一直在考虑 PassportJs
  • 用于关系可视化的javascript框架[重复]

    这个问题在这里已经有答案了 可能的重复 javascript 中的图形可视化代码 https stackoverflow com questions 7034 graph visualization code in javascript 我
  • 对象数组数组的 PHPStorm 代码提示

    在 PHPStorm 中 对象数组的代码提示既简单又很棒 class FooList public function construct this gt fooList new Foo 1 this gt fooList new Foo 2
  • PHP7 中的 Argon2i - 选择合适的选项

    我应该使用什么值来生成 Argon2i 哈希值以及如何找到我的硬件可以承受的适当设置 Namely memory cost time cost threads as options memory cost gt 1 lt lt 17 tim
  • JavaScript iFrame 限制

    我知道 出于安全原因 如果 iframe 属于不同的域 则 javascript 无法读取 iframe 的内容 这是有道理的 因为整个页面可能是一个 iframe 并且在框架之外具有监听脚本 问题是 在另一个方向上是否也有同样的限制 if
  • 选项“noEmit”不能与选项“incremental”一起指定

    我正在开发一个 next js 应用程序 它有以下内容tsconfig js compilerOptions target ES2018 module esnext lib dom es2018 es2019 array jsx prese
  • 如何在groovy中获取方法参数/参数的名称?

    我有一个 groovy 脚本 它有一个带有 2 个参数的函数 其中之一是哈希图 我想检查函数内部哈希图变量的名称是否包含子字符串 我该怎么做 def myfunc String var HashMap var2 need a routine
  • Eclipse:向 Maven 日志条目添加时间戳

    我正在使用 Eclipse Neon 1 并且我使用deployGoogle App Engine 插件的目标
  • 在 firebase 上进行电话身份验证时出错

    在 firebase 上进行电话号码身份验证时 我因此错误消息而崩溃 请帮忙 com russvkm chathut 是我的包名称 E AndroidRuntime FATAL EXCEPTION main Process com russ
  • PhpStorm 不与服务器同步

    问题是这样的 我的 phpStorm 项目使用通过 FTP 远程访问服务器 当我保存修改后的文件时 文件会正常上传到服务器 但是当我在服务器上创建文件夹时 我在 phpStorm 中看不到它 任何想法 PhpStorm 是围绕 本地项目文件
  • XACML 3.0 中的多重决策配置文件策略

    我需要为特定用户编写一个策略 它将返回如下 xacml 响应 该政策基于单用户 bob FirstName Create true Read true Update true Delete false MiddleName Create t
  • 这怎么可能:在 WaitOne 中处理 OnPaint

    我有一个ManualResetEvent 有一次 我使用等待该事件WaitOne 令我惊讶的是 我收到了一份OnPaint事件 而在WaitOne 这种情况也经常发生 堆栈跟踪如下所示 我明白了WaitOne会阻塞当前线程 并且在事件触发之
  • 如果Android中的应用程序被强制关闭,如何重置警报

    如果出现以下情况 我的应用程序使用 AlarmManager 设置的警报将被清除 用户在设置中强制关闭我的应用程序 一些任务杀手应用程序自动终止了我的应用程序进程 Android 本身杀死了我的应用程序 因为前端应用程序需要内存 请告诉我如
  • F# XML 多行文档,Visual Studio 2017

    我想添加一个多行 XML 文档 当我的鼠标悬停在它上面时 该文档将出现在 Intelli Sense 气泡中 参见示例 当我使用 Visual Studio 2015 时 以下代码可以工作 请参见下面的屏幕截图 但现在当我使用 Visual
  • 预加载组件

    在工作中 我们使用 DevExpress 作为用户界面 第一次打开使用 DevExpress 控件的表单时 会出现很长的暂停 在某些客户端上有时会出现 15 20 秒 在 Visual Studio 中 我可以看到该阶段正在加载大量程序集
  • CSS3可计算表达式?

    是否有任何技术允许在 css3 语句中使用表达式 通常 做以下事情是有帮助的 width 35 20px或类似的 目前 针对这些情况 我唯一的解决方案是重新设计页面或使用 javascript 动态设置 css CSS 关于值和单位的工作草
  • 调试类型初始值设定项中的异常

    我有一个静态类 没有静态构造函数 但有许多静态成员 第一次使用该类时 我抛出 TypeInitializationException 我正在打破 CLR 异常 并且已禁用 仅我的代码 问题是我只有在第一次使用这个类时才会得到这个异常 我不会
  • 如何在 ASP.NET MVC 5 中插入主从表

    I have Orders表和订单详细信息数据库中的表 通过 Entity Framework 6 我获得了一个模型 因此我可以从它生成类 我还从 Orders 表生成了控制器和视图 Orders folio PK date custome