gpt4 book ai didi

asp.net-mvc - Ajax.ActionLink 与 mvc 核心的替代方案

转载 作者:行者123 更新时间:2023-12-03 01:59:14 25 4
gpt4 key购买 nike

在 MVC5 中,@Ajax.ActionLink 对于仅更新部分 View 而不是重新加载整个 View 非常有用。显然在 MVC6 中不再支持。

我尝试使用 @Html.ActionLink 如下所示,但它不会更新表单,它仅返回部分 View :

查看:

@Html.ActionLink("Update", "GetEnvironment", "Environments", new { id = Model.Id }, new
{
data_ajax = "true",
data_ajax_method = "GET",
data_ajax_mode = "replace",
data_ajax_update = "environment-container",
@class = "btn btn-danger"
})

控制:

public async Task<ActionResult> GetEnvironment(int? id)
{

var environments = await _context.Environments.SingleOrDefaultAsync(m => m.Id == id);
return PartialView("_Environment",environments);
}

部分 View :

@model PowerPhysics.Models.Environments
this is a partial view

然后我尝试使用 ViewComponents。当页面加载时,组件工作正常,但我不明白如何随后刷新组件(例如使用按钮):

查看:

@Component.InvokeAsync("Environments", new { id = Model.Id }).Result

组件:

public class EnvironmentsViewComponent : ViewComponent
{
public EnvironmentsViewComponent(PowerPhysics_DataContext context)
{
_context = context;
}

public async Task<IViewComponentResult> InvokeAsync(int? id)
{
var environments = await _context.Environments.SingleOrDefaultAsync(m => m.Id == id);

return View(environments);
}
}

如何使用 MVC6 中的 PartialViews 只更新 View 的一部分?

最佳答案

您可以按如下方式使用标签:

 <a data-ajax="true"
data-ajax-loading="#loading"
data-ajax-mode="replace"
data-ajax-update="#editBid"
href='@Url.Action("_EditBid", "Bids", new { bidId = Model.BidId, bidType = Model.BidTypeName })'
class="TopIcons">Link
</a>

确保 _Layout.cshtml 页面的 body 标记末尾有以下脚本标记:

<script src="~/lib/jquery/jquery.unobtrusive-ajax/jquery.unobtrusive-ajax.js"></script>

关于asp.net-mvc - Ajax.ActionLink 与 mvc 核心的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39193604/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com