C# MVC 4-保存在一个视图中对多个实体类中的对象所做的编辑?

C# MVC 4-保存在一个视图中对多个实体类中的对象所做的编辑?,c#,asp.net-mvc,C#,Asp.net Mvc,我的一个视图显示了四个不同实体类的零到多个对象 我的目标是用一种简单的方法为所有四种实体类型编辑一个公共值 整个视图只有一个提交按钮,此提交按钮调用ActionResult,其中对所有可编辑值所做的更改应按如下方式存储(注意:这不起作用,因为签名似乎无效): 3)控制器执行其余操作: [HttpPost] public ActionResult UpdateStockPositionTicker(string key, string ticker) { i

我的一个视图显示了四个不同实体类的零到多个对象

我的目标是用一种简单的方法为所有四种实体类型编辑一个公共值

整个视图只有一个提交按钮,此提交按钮调用ActionResult,其中对所有可编辑值所做的更改应按如下方式存储(注意:这不起作用,因为签名似乎无效):

3)控制器执行其余操作:

    [HttpPost]
    public ActionResult UpdateStockPositionTicker(string key, string ticker)
    {
        if (ModelState.IsValid)
        {
            var stockposition = db.StockPositions.Find(Convert.ToInt32(key));
            stockposition.BloombergID = ticker;
            db.SaveChanges();
    ....

我认为总体方法可能有问题

如果您希望主动管理对象的编辑状态,那么可能需要一个更健壮的ajax解决方案

我个人会做一个“focusOut”绑定,并在focusOut时调用一个独特的操作来更新该状态,并且只更新该状态


这可能需要额外的体系结构开销,您无法或不会将其添加到项目中,但这将使项目更加灵活。

我认为总体方法可能有问题

如果您希望主动管理对象的编辑状态,那么可能需要一个更健壮的ajax解决方案

我个人会做一个“focusOut”绑定,并在focusOut时调用一个独特的操作来更新该状态,并且只更新该状态


这可能需要额外的体系结构开销,您无法或不会将其添加到项目中,但这将使项目更加灵活。

您应该拥有独立于实体类的ViewModel。在控制器中,您应该为所需的任何实体提供所有必要的更新。

您应该拥有独立于实体类的ViewModel。在控制器中,您应该为您需要的任何实体提供所有必要的更新。

Hm我想到了一个“解决方案”。。每个对象都有一个“保存”按钮。不过那真的很难看。嗯,我想到了一个“解决办法”。。每个对象都有一个“保存”按钮。不过,那真的很难看。你能举例说明控制器的外观吗?一个能够由四个实体组成的零到多个对象的签名会是什么样子?看看这个讨论。这里的讨论集中在如何显示两个不同的模型上,我已经做到了这一点。我只是不知道如何处理回发中的信息以更新所有对象。你能举个例子说明控制器的外观吗?一个能够由四个实体组成的零到多个对象的签名会是什么样子?看看这个讨论。这里的讨论集中在如何显示两个不同的模型上,我已经做到了这一点。我只是不知道如何处理回发中的信息以便更新所有对象。嗯,这可能是一个解决方案。就像一个可编辑文本框失去焦点时的Ajax回发。我要试试看@彼得,没错!这将允许每个文本框处理它自己的状态,而不是强迫整个表单一次发布。谢谢David,我现在可以使用它了(见我更新的问题)!好主意。嗯,这可能是个解决办法。就像一个可编辑文本框失去焦点时的Ajax回发。我要试试看@彼得,没错!这将允许每个文本框处理它自己的状态,而不是强迫整个表单一次发布。谢谢David,我现在可以使用它了(见我更新的问题)!好主意。
<input type="text" class="updateBloombergTicker StockPosition" 
data-key="@stockposition.StockPositionID"  style="width: 100px;" 
value="@stockposition.BloombergID"/>
$(".updateBloombergTicker").blur(function () {

    $this = $(this);
    if ($this.hasClass("StockPosition")) {
        AJAX("../Excel/UpdateStockPositionTicker",
            {
                key: $this.attr("data-key"),
                ticker: $this.val()
            }
        );
    }

    if ($this.hasClass("BondPosition")) {
    .......
    [HttpPost]
    public ActionResult UpdateStockPositionTicker(string key, string ticker)
    {
        if (ModelState.IsValid)
        {
            var stockposition = db.StockPositions.Find(Convert.ToInt32(key));
            stockposition.BloombergID = ticker;
            db.SaveChanges();
    ....