ASP.NET MVC 在 Ajax 调用控制器后显示视图

Posted

技术标签:

【中文标题】ASP.NET MVC 在 Ajax 调用控制器后显示视图【英文标题】:ASP.NET MVC Show View after Ajax call to a Controller 【发布时间】:2012-10-27 13:30:57 【问题描述】:

我有一个带有提交表单的视图:当我单击它时,会调用一个 jquery/ajax 函数。此函数必须对 View Model 进行编码,调用 Controller 操作并显示返回的 View。 现在,这是我的功能:

<script type="text/javascript">
function Analyze() 
    var urlact = '@Url.Action("Analysis")';
    var model = '@html.Raw(Json.Encode(Model))';
    $.ajax(
        data: model,
        type: "POST",
        url: urlact,
        dataType: "json",
        contentType: "application/json; charset=utf-8",
        success: function (data) 
            //WHAT HERE??
        
    );

</script>

分析动作是一种

public ViewResult Analysis(IEnumerable<Azienda> aziende) 
        Debug.WriteLine(aziende.Count());
        return View(aziende);
    

返回视图! 如何在成功时显示该视图:函数(数据)? 我尝试将 dataType 更改为 html 并调用成功 alert(data) 但我遇到了编码模型的问题,我尝试评论 contentType 行但同样的模型编码问题。

有人知道怎么做吗? js/query/ajax 变通方法也很好。

谢谢大家!

【问题讨论】:

您要替换整个页面还是只替换一部分? 我要替换所有页面! 为什么不只是在表单上定期提交呢? 因为这会导致回发和页面刷新 你在这方面有什么收获吗?我想做类似的事情 【参考方案1】:

使用

return PartialView()

而不是

return View()

在您的控制器中。然后在您的 ajax 调用中的成功函数中,使用 jQuery .html() 函数更新您希望在 html 中更新的元素。见Query.html()和View() vs. PartialView()

【讨论】:

【参考方案2】:

使用 aziende 作为模型创建一个单独的局部视图,并在分析操作中返回它,然后将结果附加到视图中的 div:

//action returning a partial view
public ActionResult Analysis(IEnumerable<Azienda> aziende) 

    Debug.WriteLine(aziende.Count());
    return PartialView("_partialView", aziende);


//then append the result to a div in your javascript
success: function (data) 
    $("#some-div").html(data); 

【讨论】:

以上是关于ASP.NET MVC 在 Ajax 调用控制器后显示视图的主要内容,如果未能解决你的问题,请参考以下文章

在asp.net mvc中对控制器进行简单的Ajax调用

ASP.NET MVC RedirectToAction 在从视图中发布 AJAX 后不起作用

如何在 ASP.Net MVC 5 中调用嵌套 ajax 调用并将对象数据发送到控制器

asp.net mvc 4控制器并行执行多个ajax调用

ASP.NET MVC Ajax 错误处理

如何使用 jQuery 和 ASP.NET MVC 从 AJAX 调用返回错误消息?