【问题标题】:Simple Ajax call posting back entire page简单的 Ajax 调用回发整个页面
【发布时间】:2013-12-06 12:55:32
【问题描述】:

我想使用 Ajax 从控制器操作异步调用和返回数据。

在下面的示例中,当单击 ActionLink 时,它会返回一个新页面,其中只有“Hello!”。我怎样才能让它只更新 div?

控制器:

public class HelloAsyncController : Controller
{
    public ActionResult Index()
    {
        return View();
    }

    public string Hello()
    {
        return "Hello!";
    }
}

查看:

@Ajax.ActionLink("Say Hello", "Hello", "HelloAsync",
    new AjaxOptions()
    {
        UpdateTargetId = "HelloDiv"
    })

<div id="HelloDiv"></div>

包含在 _Layout.cshtml 中:

<script src="~/Scripts/modernizr-2.6.2.js"></script>
<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>
<script src="~/Scripts/jquery.unobtrusive-ajax.min"></script>
<script src="~/Scripts/bootstrap.min.js"></script>

我正在使用 MVC 5。

【问题讨论】:

  • 您是否尝试在操作链接中传递controller
  • @Satpal:我试过了。帖子已编辑。

标签: c# asp.net-mvc asp.net-mvc-5


【解决方案1】:

您是否尝试过使用

@Ajax.ActionLink(
    "Say Hello", 
    "Hello", 
    "HelloAsync", 
    new AjaxOptions
    {
        UpdateTargetId="HelloDiv",
        HttpMethod = "Get",
        InsertionMode = InsertionMode.Replace 
    })

我觉得这个问题可能是

UpdateTargetID 的内容必须在部分视图中,并且 部分视图需要从控制器动作中调用。 .你需要使用一个 部分观点。

还要检查

检查文件 MicrosoftAjax.js 和 MicrosoftMvcAjax.js 是否真的 存在于 ../../Scripts 文件夹中。

【讨论】:

  • 我已经包含了控制器。抱歉,编辑了我的帖子以包含它。
  • 我也尝试过使用 PartialView 得到相同的结果。我没有MicrosoftAjax.jsMicrosoftMvcAjax.js。我读到它们被替换为jquery.unobtrusive-ajax.min.js?
猜你喜欢
  • 1970-01-01
  • 2015-07-15
  • 1970-01-01
  • 1970-01-01
  • 2010-11-11
  • 1970-01-01
  • 2017-07-17
  • 2011-02-04
  • 1970-01-01
相关资源
最近更新 更多