MVC。在HttpPost之后看不到视图

时间:2015-06-11 12:10:27

标签: asp.net-mvc asp.net-mvc-routing

我的MasterPage上的搜索按钮有以下代码:

     <form id="form1" runat="server"> 
        <input type="text" value="Поиск" size="25" class="search-form" id="txt_search" name="txt_search" />
        <button type="submit" name="b_search" id="b_search" value="1" class="but-search"  onclick="javascript:MySaveFunc(txt_search); ">&nbsp</button>  

     <script type="text/javascript">
         function MySaveFunc(rec) {
             var new_name = rec.value;

             $.ajax({
                 url: '/Home/SearchPost',
                 type: "POST",
                 cache: false,
                 data: {
                     txt_name: rec.value 
                 },
                 success: function (data) {

                 },
                 error: function (data) {

                 }
             });


             return false;
         }

</script>
    </form> 

我的控制器中也有以下代码:

[HttpPost] 
        public  ActionResult  SearchPost(string txt_name)
        {          
           return RedirectToAction("Search", new { txt_name =txt_name });       

        }


        public ActionResult Search(string txt_name)
        {     
            ......

             return View("Search");
        }

在global.asa

  routes.MapRoute("Search", "Home/Search/{txt_name}", new { controller = "Home", action = "Search", txt_name = UrlParameter.Optional });
  routes.MapRoute("SearchPost", "Home/SearchPost/{txt_name}", new { controller = "Home", action = "SearchPost", txt_name = UrlParameter.Optional }); 

如果我这样打电话 - http://localhost:55419/Home/search/126 - 它的工作正常。 但如果我点击&#34;搜索&#34;按钮,应用程序不显示页面&#34;搜索&#34; !!

首先转到&#34; SearchPost&#34;行动,然后&#34;搜索&#34;。没有错误。但最后一行不起作用:

 return View("Search");

应用程序不显示视图&#34;搜索&#34;,仅显示上一页。 怎么了?

1 个答案:

答案 0 :(得分:0)

试试这个

[HttpPost]
public  ActionResult  SearchPost(string txt_name)
{          
    return JavaScript(string.Format("window.location = '{0}'", Url.Action("Search", "Controller"));
}

您必须确保Search操作方法的网址是正确的,我不知道控制器名称是什么。

理论上说,既然你已经提出了客户端的ajax请求,那么返回View("Search")就不会在你的情况下工作。相反,返回JavaScript操作结果,并使用命令将浏览器重定向到搜索页面。您可以向网址添加查询字符串参数,或者您需要的任何其他内容,以传递给Search操作方法。