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>