【问题标题】:Reload partial view using html razor使用 html razor 重新加载部分视图
【发布时间】:2025-12-11 16:05:04
【问题描述】:

我的模型中有这个简单的用户列表。 如果我们单击一个用户,我想将该用户设置为所选用户并刷新部分视图。 我的代码如下:

<div id="myPartialView">
@if (@Model.ChosenUser != null)
{
    @Model.ChosenUser.UserName
}                        

<ul>    
    @foreach (var u in Model.Users)
    {
        <li>
            <a href='@Url.Action("ChooseUser", "Controller", new { userId = u.UserId })'>@u.UserName</a>

        </li>
    }
</ul>

控制器方法返回一个 Ok(); 我当前的代码将我重定向到一个空页面,我必须返回并刷新页面才能看到模型更改。

我的问题是,如何在剃刀操作后只刷新这个局部视图?

【问题讨论】:

  • 如果要保持在同一页面上,则需要使用 ajax。

标签: c# razor model-view-controller partial-views


【解决方案1】:

您需要在这里使用Ajax.ActionLink

@foreach (var u in Model.Users)
{
    <li>
        @Ajax.ActionLink(u.UserName, // <-- Text to display
             "Choose User", // <-- Action Name
             "Controller", // <-- Controller Name
             new AjaxOptions
             {
                 UpdateTargetId="myPartialView", // <-- DOM element ID to update
                 InsertionMode = InsertionMode.Replace, // <-- Replace the content of DOM element
                 HttpMethod = "GET" // <-- HTTP method  
             })
   </li>
}

helper 方法将渲染创建具有指定值的锚标记元素所需的 html,并且您需要确保在主布局中添加了脚本以实现不显眼的 ajax。

为此,您可以在这里查看,需要哪些脚本作为先决条件:

How to use Ajax.ActionLink?

并且您的操作方法应该返回与您的局部视图所期望的类型相同的模型,并在模型中填充数据。

详细了解Ajax Action Link请参考以下帖子:

http://www.c-sharpcorner.com/UploadFile/abhikumarvatsa/ajax-actionlink-and-html-actionlink-in-mvc/

【讨论】:

  • 感谢您的回答。我最终使用了ajax。我一直在寻找没有 javascript 的解决方案,但我找不到任何解决方案。
  • 如果你不想重新加载整个页面,你不能不使用 jquery ajax
最近更新 更多