Asp.net mvc 3 如何从控制器刷新@html.Action

Asp.net mvc 3 如何从控制器刷新@html.Action,asp.net-mvc-3,Asp.net Mvc 3,我有一个页面,左边是一个资产菜单列表,当你点击一个资产时,右边会出现一个表单来编辑该资产。我需要能够在编辑资产后刷新资产列表,以便名称的任何更改也显示在菜单列表上 这是我的页面 </head> <body> <div id="leftHandMenu"> <h2>assets</h2> @Ajax.ActionLink("Create Asset", "CreateAsset",

我有一个页面,左边是一个资产菜单列表,当你点击一个资产时,右边会出现一个表单来编辑该资产。我需要能够在编辑资产后刷新资产列表,以便名称的任何更改也显示在菜单列表上

这是我的页面

 </head>
    <body>
        <div id="leftHandMenu">
        <h2>assets</h2>
        @Ajax.ActionLink("Create Asset", "CreateAsset", new AjaxOptions() { UpdateTargetId = "FormContainer", InsertionMode = InsertionMode.Replace })
        @Html.Action("Assets")
        </div>
        <div id="FormContainer">
        </div>
    </body>
</html>

我希望能够在保存后在控制器中的EditAsset post方法中刷新assets视图,因为这更容易测试,但从我所能告诉您的情况来看,我可能需要在编辑表单java脚本submit的成功回调中执行此操作。

对于编辑Assest,使用Ajax表单并在成功事件上调用以下方法。您还需要在页面加载时调用以下方法

$.get("/ControllerName/Assets", { random: '@DateTime.Now.Ticks' }, function (response) {
                $("#ListOfAssestDiv").html(response);                
            });
对于displayassest列表,我的意思是(@Html.Action(“Assets”)放在另一个div中

 </head>
    <body>
        <div id="leftHandMenu">
        <h2>assets</h2>
        @Ajax.ActionLink("Create Asset", "CreateAsset", new AjaxOptions() { UpdateTargetId = "FormContainer", InsertionMode = InsertionMode.Replace })
<div id="ListOfAssestDiv">
        @Html.Action("Assets")
</div>
        </div>
        <div id="FormContainer">
        </div>
    </body>
</html>

资产
@ActionLink(“创建资产”、“创建资产”、新AjaxOptions(){UpdateTargetId=“FormContainer”,InsertionMode=InsertionMode.Replace})
@Html.行动(“资产”)

如果您有任何疑问,请告诉我。

很好,谢谢。只是一个小问题,为什么要将随机参数添加到资产url的末尾?@DavidKethel。这是ajax请求。在IE中,如果url相同,它将从浏览器缓存中获取响应(在调试模式下),以避免此问题。既然不支持@Html.Action,您将如何在.net Core中执行此操作。由此我推断,您无法使用视图组件执行ajax请求。
[ChildActionOnly]
public PartialViewResult Assets()
{
    var assets = _assetRepo.GetAll();
    return PartialView(assets);
}

public PartialViewResult EditAsset(Guid id)
{
    SetUpViewDataForComboBoxes();

    var asset = _assetRepo.Get(id);
    return asset == null
               ? PartialView("NotFound")
               : PartialView("EditAsset", asset);
}

[HttpPost]
public PartialViewResult EditAsset(Asset asset)
{

    if (ModelState.IsValid)
    {
        _assetRepo.Update(asset);
        return PartialView("EditAssetSuccess");
    }

    SetUpViewDataForComboBoxes();

    return PartialView("EditAsset", asset);
}
$.get("/ControllerName/Assets", { random: '@DateTime.Now.Ticks' }, function (response) {
                $("#ListOfAssestDiv").html(response);                
            });
 </head>
    <body>
        <div id="leftHandMenu">
        <h2>assets</h2>
        @Ajax.ActionLink("Create Asset", "CreateAsset", new AjaxOptions() { UpdateTargetId = "FormContainer", InsertionMode = InsertionMode.Replace })
<div id="ListOfAssestDiv">
        @Html.Action("Assets")
</div>
        </div>
        <div id="FormContainer">
        </div>
    </body>
</html>