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 RedirectToAction 在从视图中发布 AJAX 后不起作用