首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将模型子表传递给HTTPPOST控制器进行模型编辑

将模型子表传递给HTTPPOST控制器进行模型编辑
EN

Stack Overflow用户
提问于 2017-03-22 23:17:12
回答 1查看 62关注 0票数 0

我已经创建了一个MVC5应用程序,其中我正在创建一个自定义的购买系统。

My View模型是基于SQL数据库的内容生成的。数据库对包含一些基本数据的采购订单使用单个主键。除了基本数据外,每个PO在该采购订单中还可以有多个项目。这创建了一种关系,其中一次购买可以有N个项目。

当我做一个表单提交的采购订单发送特定的信息,即使用TextBoxFor(m => m.Date),工作很好。但是,我似乎不能传递其中所有项的列表。例如,当我执行@Html.TextBoxFor(m => m.Details.ItemName)时,它在POST期间不会填充模型中的节。

我尝试使用@Html.TextBoxFor(m => m.Details)发送所有信息,但它抛出错误,因为TextBoxFor无法处理这些数据类型。

我正在寻找一个系统,在这个系统中,我可以通过添加或删除项目来编辑采购订单模型,而无需提交到我的数据库中,直到按下‘保存’按钮。

我的视图模型示例如下

代码语言:javascript
复制
public class PurchasingEditModel
{
    public tbl_PurchaseOrder PurchaseOrder;
}

采购订单本身有一个通过采购订单的外键引用链接到PurchaseOrderDetails (在SQL中)的链接。这会将多个项目创建到一个PO中。

编辑页面的控制器是

代码语言:javascript
复制
public ActionResult Edit(int? pkPurchaseOrder)
{
 model.PurchaseOrder = db.PurchaseOrder.Where(x => x.pkPurchaseOrder == pkPurchaseOrder);

return View(model);
}

这与使用@Html.TextBoxFor(m => m. )的标准Edit.cshtml一起使用。所有这些都可以很好地显示部分,直到我想在子表中发布多个项目。

对我来说,处理这个问题最简单的方法是在显示期间将model的所有内容传递给POST函数。

如果您能给出任何指导,我们将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2017-03-23 22:10:26

我已经解决了我自己的问题,这就改变了.

要在子表(IQueryable)中发布数据,我必须执行以下操作

在我的主要html代码中添加

代码语言:javascript
复制
@foreach(var item in Model.PurchaseOrder.tbl_Details)
{
    @Html.Partial("_POItemDetailsPartial", item)
}

然后,我不得不创建一个名为_POItemsPartial的MVC Page (Razor)。

在该页中,我放入了以下内容..

代码语言:javascript
复制
@using (Html.BeginCollectionItem("Model.PurcahseOrder.tbl_Details")
{
    @model ModelSpace.Model.tbl_Details

    @Html.TextBoxFor(m => m.Description)
}

当POST操作发生时,我现在获得了PurchaseOrder中所有3个项目的描述。

**

更新:

**

尽管获得了这些数据,但我现在正在丢失所有原始模型数据,例如总价格,似乎传递的部分调用Model.tbl_Details只是传递了该信息,并清除了其余部分。当它返回时,它最终删除了所有更高级别的数据。如果我注释掉部分调用,它就会全部返回。事实证明我仍然需要帮助...:(

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42955774

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档