【问题标题】:ASP.NET MVC Show View after Ajax call to a ControllerASP.NET MVC 在 Ajax 调用控制器后显示视图
【发布时间】: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 变通方法也很好。

谢谢大家!

【问题讨论】:

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

标签: html asp.net-mvc jquery razor json


【解决方案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); 
    }
    

    【讨论】:

      猜你喜欢
      • 2021-11-19
      • 2019-02-16
      • 2023-03-28
      • 2010-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-27
      相关资源
      最近更新 更多