单击侧菜单项时如何避免刷新页面

Posted

技术标签:

【中文标题】单击侧菜单项时如何避免刷新页面【英文标题】:How to Avoid Refreshing the Page when Clicking on the Side Menu item 【发布时间】:2022-01-10 18:52:28 【问题描述】:

我有一个侧边菜单,每个菜单项都是一个ViewComponent,当我单击该项目时,整个页面都会重新加载,我尝试使用 javascript,在链接上“防止默认 OnClick”,但是这样做时点击崩溃,我希望内容被渲染到侧面。

我的_布局

<!-- sidebar menu -->
<div id="sidebar-menu" class="main_menu_side hidden-print main_menu">
    <div class="menu_section">
        <ul class="nav side-menu">
            <vc:menu />
        </ul>
    </div>
</div>

我的视图组件

<li>
    <a><i class="fa fa-edit"></i> @menu.Title <span class="fa fa-chevron-down"></span></a>
    <ul class="nav child_menu">
        @foreach (var submenu in menu.Items)
        
            <li><a href="@submenu.Route">@submenu.Title</a></li>
        
    </ul>
</li>

【问题讨论】:

你编写了一个MVC项目,希望页面实现部分刷新而不刷新整个页面的功能,所以只能使用ajax绑定Side Menu按钮点击事件,然后将主要内容加载到特定的 div 中,我在下面提供了代码示例,如果您觉得对您有帮助,您可以单击 √ 接受它作为答案吗?如果您有任何其他问题,请随时告诉我们。 【参考方案1】:

我认为您需要使用以下代码来防止默认:


<a href="@submenu.Route" (click)="$event.preventDefault()"></a>

【讨论】:

【参考方案2】:

也许你想要这个功能?

在cshtml文件中,去掉标签的href特性,使用ajax获取页面内容。

<div><a id="btn1" href="#">btn1</a><a id="btn2" href="#">btn2</a></div>
<div id="center" style="width:800px;height:500px;background-color:#eee"></div>

<script>
    $("#btn1").click(function () 
        $.ajax(
            url: "https://localhost:44372/home/getPartialViewOne",
            type: "get",
            success: function (data) 
                $("#center").html("").append(data);
            
        );
    );

    $("#btn2").click(function () 
        $.ajax(
            url: "https://localhost:44372/home/getPartialViewTwo",
            type: "get",
            success: function (data) 
                $("#center").html("");
                $("#center").html(data);
            
        );
    );
</script>

并且控制器应该创建相应的返回页面视图的方法

public IActionResult getPartialViewOne()  
            return new PartialViewResult
            
                ViewName = "Test1Partial"
            ;
         
        
        public IActionResult getPartialViewTwo()  
            return new PartialViewResult
            
                ViewName = "Test2Partial"
            ;
        

【讨论】:

以上是关于单击侧菜单项时如何避免刷新页面的主要内容,如果未能解决你的问题,请参考以下文章

如何避免在asp.net中的按钮单击事件后页面刷新

如何避免页面刷新按钮事件

如何避免 move_uploaded_file() 在按钮单击时刷新页面

JSF Ajax Update 不更新组件

单击后关闭悬停子菜单而不刷新页面

如何刷新页面并保持元素不刷新(持久),直到用户单击提交?