无法使用RedirectToaction在MVC中使用Ajax.BeginForm显示全新页面

时间:2011-01-30 19:03:30

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

希望有人可以帮我解决这个问题。 当我需要更新我的实际网页的一部分时,我经常使用Ajax.BeginForm。但是,如果我在网络表单中有第二个按钮,我需要转到一个完整的不同页面,例如进行搜索并获取一些我需要完成表单的值。该页面在更新面板(updateTargetID)中出现,而不是在一个完整的新视图中出现。即使在控制器中执行RedirectToAction,也会发生这种情况。当然ajax.beginform做我接受它做的事情,换句话说更新应该更新的面板。但有没有办法让ajax.Beginform在用户选择进行搜索而不是发送表单时使用redirectToaction而不进行更新?


我正在使用asp.net MVC, 问题;

<% using (Ajax.BeginForm(new AjaxOptions() { LoadingElementId = "loadingElement", UpdateTargetId = "SearchResult", InsertionMode = InsertionMode.Replace}))  
   {%>
<% Html.RenderPartial("Searchfields", Model); %>
<div>
    <%:Html.ActionLink("blank", "Index")%>
</div>
<div id="loadingElement" style="display: none">
    Load data...
</div>
<div id="SearchResult">
    <% if (Model.SearchResult != null)
       {
           Html.RenderPartial("SearchResult", Model.SearchResult);
       } %>
</div>
<% } %> 

在控制器(帖子)中我会做其他的事情;

if (Request.IsAjaxRequest())
        {
            return PartialView("SearchResult", data.SearchResult);
        }

但在此之前,我需要这样做:

if (data.SearchResult.Count() == 1)
        {
            return RedirectToAction("Edit", "Person", new { Id = data.SearchResult.First).Id});
        }

但是当然如果我这样做了我在相应的updateTargetId中渲染的孔页, 我需要渲染一个新的视图。那么我怎么能为exampel使用javascript重定向oncomplete并将模型中的值发送到脚本来为exampel做一个window.location.replace? 我正在努力使用javascript,所以请帮助我!

0 个答案:

没有答案