0

我有一个带有 2 个局部视图的主视图(一个网格视图和一个回调面板)

这个主视图接收一个IEnumerable<Model>,面板只接收一个Model

最初调用视图时,面板的局部视图被一个空模型填充,因此它是空的。

但是我想在单击EditGridView 后重新渲染面板。

我怎样才能做到这一点?

我目前@Html.ActionLink在“编辑”按钮中有一个,但它不起作用,因为它将创建一个新视图而不是重新渲染面板的部分视图。

有什么线索吗?

编辑:

这是我的编辑:

Html.ActionLink("Edit", "EditConfig", new { id = DataBinder.Eval(c.DataItem, "QueueMonitorConfigurationsID") })

编辑链接调用的函数:

    [HttpGet]
    public ActionResult EditConfig(int id)
    {
        StorageConfigurationModel resultForPanel = new StorageConfigurationModel { };
        IEnumerable<StorageConfigurationModel> configList = (IEnumerable<StorageConfigurationModel>)Session["ConfigurationList"];
        foreach (StorageConfigurationModel configModel in configList)
        {
            if (configModel.QueueMonitorConfigurationsID == id)
            {
                resultForPanel = configModel;
                break;
            }
        }
        return PartialView("cbpnlNewUpdateConfigs", resultForPanel);
    }

包含部分视图的主视图:

@model IEnumerable<BPM.Website.Models.StorageConfigurationModel>

@Html.Partial("gvConfigurations", Model)

@Html.Partial("cbpnlNewUpdateConfigs", new BPM.Website.Models.StorageConfigurationModel { QueueMonitorConfigurationsID = -1 })
4

2 回答 2

4

我目前在编辑按钮中有一个@Html.ActionLink

你可以使用 AJAX。例如,您可以将其替换Html.ActionLink为 anAjax.ActionLink并包含jquery.jsandjquery.unobtrusive-ajax.js脚本(按此顺序)以使其充当 AJAX 调用。例如:

@Ajax.ActionLink(
    "click to edit record", 
    "Edit", 
    new { id = item.Id }, 
    new AjaxOptions { UpdateTargetId = "editContainer" }
)

单击链接时,将使用 AJAX 请求调用编辑控制器操作,并且当前项目的 id 将作为参数传递。当此 AJAX 请求完成时,id="editContainer"将使用此 AJAX 调用的结果更新 DOM 元素。因此,您的 Edit 控制器操作应返回包含要编辑的记录的局部视图。

于 2013-06-05T19:54:58.603 回答
0

解决了Ajax POST

$.ajax({ type: "POST", url: url, data: data, success: 成功, dataType: dataType });

于 2013-06-18T20:13:55.450 回答