如何使用索引

时间:2019-07-19 14:30:53

标签: c# ajax asp.net-mvc

当我关闭下拉菜单时,我正在尝试重新加载部分视图_Home。目前,我可以获取该下拉值来调用另一个方法,并执行将更改模型的逻辑,然后将模型发送回索引。但是,我无法让我的_Home局部视图重新加载并实际采用此新模型。我似乎无法实际调用public ActionResult _Home(Model model)方法。我想知道如何传递这个新模型并刷新部分视图。

我试图将模型传递给局部视图,但这似乎没有效果,没有模型传递也不会改变任何内容。我在网上看到了一些有关如何刷新局部视图的示例,但是这些示例都没有传递任何参数。

JavaScript

function OnClose() {
    var chart = $("#safetyIncident-chart").data("kendoChart");
    var chart2 = $("#qualityError-chart").data("kendoChart");
    chart.dataSource.read();
    chart2.dataSource.read();

    var selectProductionLine = $("#productionLine-dropdown").data("kendoDropDownList").value();

    $.ajax({
        url: '@Url.Action("UpdateView", "Home")', //Updates model and then calls Index
        type: 'post',
        dataType: "json",
        data: { "selectProductionLine": JSON.stringify(selectProductionLine) }, //Passes in DropDownValue correctly
        success: function (data) {
            $("#partial").html(result);
            $("#Dashboard").load("/Home/_Home"); //Trying to reload the partial view
        }

    });
}

查看

<div id="Dashboard">
    @Html.Partial("~/Views/Home/_Home.cshtml")
</div>

控制器

[HttpGet]
public ActionResult Index()
{
    DisplayViewModel dvm = (DisplayViewModel)TempData["dvm"];
    if(dvm != null)
    {
        return View(dvm);
    }
        //Initializes new dvm if previous was null
        return View(dvm);
    }

DropDown关闭并且ViewModel刷新后,我试图刷新我的局部视图。

编辑: Controller中的UpdateView方法

[HttpPost]
public ActionResult UpdateView(string selectProductionLine)
{
    if(selectProductionLine == null)
    {
        selectProductionLine = _productionLineService.Collection().FirstOrDefault().Id;
    }

    var serializer = new JavaScriptSerializer();
    dynamic jsondata = serializer.Deserialize(selectProductionLine, typeof(string));

    DisplayViewModel dvm = new DisplayViewModel();
    ProductionLine pl = _productionLineService.Find(jsondata);
    dvm.ProdLine = new ProductionLineViewModel
    {
        Id = pl.Id,
        CreatedAt = pl.CreatedAt,
        Name = pl.Name,
        ActiveLine = pl.ActiveLine,
        ComputerName = pl.ComputerName,
        UPE = pl.UPE
    };
    TempData["dvm"] = dvm;
    return Index();
    //PartialView("~/Home/_Home.cshtml", dvm);
}

0 个答案:

没有答案