如何从MVC5中的Ajax.Beginform重定向到新页面?

时间:2014-05-11 03:46:15

标签: ajax asp.net-mvc asp.net-mvc-5

我不确定使用Ajax.Beginform是否是正确的方法,我现在尝试了一些不同的东西。

我有一个文本框和一个按钮,用户可以用它来搜索数据库。它们位于我的_layout页面上。我最初在我的索引页面上有这个,并使用ajax.begin表单来呈现局部视图。我想向用户显示URL,以便他们可以在浏览器中正确导航,所以我已将搜索部分移动到我的_layouts页面,我想将其连接起来,这样如果它们在索引页面上,它会回发到搜索页面。如果它们在搜索页面上,那么它将呈现局部视图。

我试图让它只是导航到一个新页面。我已经尝试使用Ajax.begin表单(下面的代码)并直接向按钮添加代码(也在下面),但还没有让它重定向。使用Ajax,我看到响应在浏览器调试窗口的“网络”选项卡中返回,但它不会在页面上呈现。

以下是代码:

Ajax尝试:

  

@using(Ajax.BeginForm(“搜索”,“主页”,新的AjaxOptions       {           HttpMethod =“GET”       }))               {

            <div class="form-group" style="width:85%;">
                <div class="right-inner-addon">
                    <i class=" glyphicon glyphicon-search"></i>
                    <input type="text" data-autocomplete="@Url.Action("Quicksearch","Home")" class="form-control" placeholder="Search" name="q" value="@ViewBag.CurrenetFilter" />
                </div>
            </div>
            <div class="form-group">
                <button class="btn btn-default form-inline" type="submit">Search</button>
            </div>
        }
        <br />

    </div>

</div>
@RenderBody()

这是在家庭控制器上:

   public ActionResult Search(string q, int? page,  string catb = null)
    {
       return RedirectToAction("Search", "Items", new { query = q, pageNum = page, categoryB = catb });
    }

这是在项目控制器上:

 public ActionResult Search(string query, int? pageNum, string categoryB = null)
    {


        var pageNumber = pageNum ?? 1; // if no page was specified in the querystring, default to the first page (1)

        var items = db.items_with_descriptions
           .Where(r => r.category_c.Contains(query) && r.category_b.Contains(categoryB) || string.IsNullOrEmpty(query) || string.IsNullOrEmpty(categoryB))
            .OrderBy(r => r.level);

        var onePageOfProducts = items.ToPagedList(pageNumber, 10); // will only contain 25 products max because of the pageSize

        if (!string.IsNullOrEmpty(query))
        {
            ViewBag.CurrenetFilter = query;
        }

        //delete

        if (!string.IsNullOrEmpty(categoryB))
        {
            ViewBag.Catb = categoryB;
        }

        ViewBag.OnePageOfProducts = onePageOfProducts;
        return View(items.ToPagedList(pageNumber, 10));
    }

最后,我还尝试删除了ajax引用并将以下内容添加到按钮中:

<button class="btn btn-default form-inline" type="submit" onclick="window.location.href=@Url.Action("Search", "items",new {q=@ViewBag.CurrenetFilter})">Search</button>

当我这样做时没有任何事情发生。

0 个答案:

没有答案