2017-02-21 135 views
1

我有一个索引的MVC控制器,当用户通过表单过程时,它将循环多个PartialViewMVC局部视图循环返回上一个局部视图

这里是指数:

@section pageMain { 
    <div id="partialView"> 
     @Html.Partial("SelectAccount", SUPR.Models.Account.GetAccounts()); 
    </div> 
} 

这工作得很好,我也得到了SelectAccount页面就好了。

我的问题是,我有一个AJAX调用,当用户在SelectAccount页面上选择一个表中的一行时运行。应该发生的是PartialView然后被替换为另一个PartialView,显示所选行的详细信息。这实际上确实有效,但大约1秒钟后,它会循环回到SelectAccountPartialView,由于某种原因,该查询字符串会附加到该URL。

Before

After

下面是AJAX调用的代码:

$.ajax({ 
    type: "GET", 
    url: "/Review/GetReviewView", 
    data: { profitCenter: profitCenterNo } 
}).done(function (data) { 
    $('#partialView').html(data); 
}); 

唯一是在控制器GetReviewView情况是,我返回PartialViewPartialView名称和型号。这是因为,在那个短暂的时刻,我可以看到ReviewAccount视图,正确的数据在字段中。

任何想法为什么这种奇怪的行为发生?

+0

而且,是的,如果您有任何建议,我完全接受其他/更好的方法。 – Ryan

回答

0

您是否在JS中捕获event?如果您进而引发click事件则event参数添加到方法,然后在方法的末尾添加:

event.preventDefault()

,看看它是否仍然发生。这听起来像是客户端JS问题,而不是C#问题。

你这样做的方式其实很好。曾经有一个名为ASP-AJAX的微软库,或者别的什么,不记得,因为我没用太多。这个库基本上允许你用ASP-AJAX-METHOD,ASP-AJAX-REFRESH-TYPE来装饰HTML元素,它会自动做类似于你现在正在做的事情。转到服务器并检索PartialView。

+0

在这个时刻,你真是我最爱的人。我在这个帖子上寻找了几个小时,尝试了无数不同的解决方案。一行,去图:/ – Ryan

+0

哈哈没问题,我曾经发生过很多次!祝你好运! –