当前位置:  开发笔记 > 编程语言 > 正文

即使我使用的是Ajax.Beginform,似乎整个页面都很清爽

如何解决《即使我使用的是Ajax.Beginform,似乎整个页面都很清爽》经验,为你挑选了1个好方法。

我有以下代码,我试图从常规页面更改为ajax页面,所以当我提交表单时,我只刷新LInkList div.我更改使用行以使用Ajax.BeginForm

这是查看代码:



<%using (Ajax.BeginForm("AddNewLink", "Test", new AjaxOptions { UpdateTargetId = "LinkList" }))
  { %>
Add New Link
Url:
<% } %>

这是控制器代码:

   [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult AddNewLink(FormCollection collection_)
    {
        string url = collection_["url"].ToString();

        Test test = new Test();
        test.Name = DateTime.Now.ToString();

        if (Request.IsAjaxRequest())
        {
            return PartialView("TestUserControl", test);
        }

        return View("Index", test);
    }

知道为什么整个页面会在这种情况下刷新而不是仅仅在div标签内刷新?Request.IsAjaxRequest()始终返回false.



1> tvanfosson..:

是整个页面刷新还是整个页面在DIV中重新渲染.如果是前者,我怀疑你可能在页面上有一个javascript错误,这将导致你的AJAX处理可操作并导致它完成一个完整的帖子.使用IE8调试或Firefox/Firebug进行检查.您需要在使用AjaxHelper方法的每个页面上包含MicrosoftAjax.js和MicrosoftMvcAjax.js.

如果是后者,我认为你最终会遇到这个问题,那是因为无论你是通过AJAX还是完整帖子获取页面,都会返回整个视图.在方法中添加一些代码,只返回通过AJAX发出请求时要替换的局部视图.

 var container = GetContainer(ds1);
 if (request.IsAjaxRequest())
 {
      return PartialView( "LinkList", container );
 }
 else 
 {
      return View( "Index", container );
 }


您必须包含Microsoft Ajax库,否则将无法执行AJAX请求.确保在使用Ajax.BeginForm的任何页面上包含MicrosoftAjax.js和MicrosoftMvcAjax.js.
推荐阅读
无名有名我无名_593
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有