刷新部分视图后,Ajax重新加载页面

时间:2019-04-02 15:04:20

标签: asp.net ajax asp.net-mvc partial-views

我在Index.cshtml中有一个局部视图,在我的局部视图中有一个列表。当我单击列表项时,它将调用 selectProj()并通过ajax发出警报,作为测试。这就是我所需要的。我的问题是列表中有一个按钮为“添加新项目”。添加项目时,我会重新加载局部视图。重新加载部分视图后,当我单击列表项时,它会再次发出警报,但也会刷新index.cshtml,但是刷新页面后,它只会发出不刷新的警报。我不想刷新索引。我想请教您有关如何避免刷新的意见。非常感谢您的回答!

我在下面的Index.cshtml中的代码块;

<div id="projectListDiv">
      @Html.Partial("SelectProjectListPartialView", @Model)
</div>

我的局部视图就是这样...

@model Projact.Models.ViewModels.IndexViewModel

<div>
   <button id="collapsibleProjectBtn" class="collapsible">Select Project</button>
   <div class="content">
        <ul id="projectList">
        @{
           if (Model != null)
           {
             foreach (var project in Model.Projects)
                {
                    <li id="p_@project.Id"><a href="" onclick="selectProj(@project.Id, '@project.ProjectName.ToString()')">@project.ProjectName</a></li>
                }
            }
          }
          <li><button type="button">Add new project</button></li>
        </ul>
   </div>
</div>

<script type="text/javascript">

    var selectProj = function (projectId, projectName) {

        $.ajax({
            url: '@Url.Action("GetDocuments","Home")',
            contentType: "application/json; charset=utf-8",
            data: { 'projectId': projectId},
            type: 'GET',
            cache: 'false',
            dataType: 'json',
            success: function (result) {                
                alert("Test");
            }
        });        
    }
</script>

1 个答案:

答案 0 :(得分:0)

嗨,约翰尼,问题不在于ajax调用,而是触发ajax的链接,我的意思是因为您的代码并未阻止正在导航的链接的默认行为;这就是为什么它似乎在刷新页面。

可以尝试吗?

<a href="" onclick="selectProj(event, @project.Id, '@project.ProjectName.ToString()')">

<script type="text/javascript">

    var selectProj = function (e, projectId, projectName) {
        e.preventDefault();

        $.ajax({
            url: '@Url.Action("GetDocuments","Home")',
            contentType: "application/json; charset=utf-8",
            data: { 'projectId': projectId},
            type: 'GET',
            cache: 'false',
            dataType: 'json',
            success: function (result) {                
                alert("Test");
            }
        });

    }
</script>