繁体   English   中英

如何使用(Jquery)或(Jquery和Ajax)在MVC Core中将数据插入到明细表中

[英]How to insert data to details Table in mvc core using (Jquery) or (Jquery and Ajax)

长话短说,我正在工作的公司决定继续使用核心技术进行开发,作为前winforms开发人员,我不熟悉Web概念,并且无法将详细信息表保存到主表。 任何帮助都非常感谢。

我有两个表,一对多关系

TOURNAMENTS_M (Master)

TOURNAMENTS_D (Detail) 

我已经编辑了脚手架的“创建”页面,以包括要输入的明细表的字段。

我什至设法使用Jquery(可视地)为添加的详细信息记录更新了表。

我在将这些信息保存到数据库时遇到了麻烦,但是我一直在使用不同的方法来学习一些不同的教程。但是,使用这两种方法都无法成功...

第一种方法是使用Jquery和Ajax方法。 我已经看到了一些示例,这些示例中的人们通过模式窗口保存数据,并且单击保存时会在gridview上更新数据,因此据我所知(如果我错了,请纠正我)Ajax用于重新加载数据而不刷新页面,并且将数据回传到控制器。 就我而言,我不确定这是否是正确的方法,因为主控件和子控件都在同一页面上。

第二种方法只是使用jQuery

在这种方法中,我在控制器中的Create方法和jquery方法如下

[HttpPost]
    [ValidateAntiForgeryToken]
    public async Task<IActionResult> Create(TOURNAMENTS_M pTournamentsM)
    {

        if (ModelState.IsValid)
        {
            _context.Add(pTournamentsM);
            await _context.SaveChangesAsync();
            return RedirectToAction(nameof(Index));
        }
        return View(pTournamentsM);
    }

function GetCurrentDetail() {

var TD_LEVEL = $("#TD_LEVEL").val();
var TD_SB = $("#TD_SB").val();
var TD_BB = $("#TD_BB").val();


var tourDetail = {
    "TD_LEVEL": TD_LEVEL,
    "TD_SB": TD_SB,
    "TD_BB": TD_BB
};

return tourDetail;

}

//点击“添加游览详细信息”按钮功能时的触发功能CreateRowForTourDetails(){

    var current = GetCurrentDetail();
    var index = $("#detailsTable").children("tr").length;


    var indexcell = "<td style='display:none'> <input type='hidden' id='index" + index + "' name='TOURNAMENTS_D.index' value = '" + index + "' /> </td>";

    var TD_LEVEL = "<td> <input type='hidden' id='TD_LEVEL" + index + "' name='TOURNAMENTS_D[" + index + "].TD_LEVEL ' value = '" + current.TD_LEVEL + "' />" + current.TD_LEVEL + " </td>";
    var TD_SB =    "<td> <input type='hidden' id='TD_SB" + index + "' name='TOURNAMENTS_D[" + index + "].TD_SB ' value = '" + current.TD_SB + "' />" + current.TD_SB + " </td>";
    var TD_BB =    "<td> <input type='hidden' id='TD_BB" + index + "' name='TOURNAMENTS_D[" + index + "].TD_BB ' value = '" + current.TD_BB + "' />" + current.TD_BB + " </td>";

    //var removeButton = "<td><a id ='myRemove' data-itemId='0'  class='btn btn-primary'>Remove</a></td>";

    var tourDetail = "<tr>" +indexcell +  +TD_LEVEL + TD_SB + TD_BB  + "</tr>";

    var detailsTableBody = $("#DetailsTableBody");

    detailsTableBody.append(tourDetail);     
}

通过这种方法,当我将断点放置在控制器的Create函数中时,我可以看到TOURNAMENTS_D的计数增加了,但是该值为null 在此处输入图片说明

尝试使用Web Browser Debug工具检查请求,确保您的请求如下所示:

在此处输入图片说明

这是我的模特:

    public class Order
{
    public int Id { get; set; }
    public string OrderNo { get; set; }
    public ICollection<OrderDetail> OrderDetails { get; set; }
}

public class OrderDetail
{
    public int Id { get; set; }
    public int ProductId { get; set; }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM