• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

MVC。不能看景后HttpPost

asp.net-mvc 来源:Nata Ermakova 10次浏览

我有我的母版的搜索按钮下面的代码:MVC。不能看景后HttpPost

 <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 – 它工作正常。 但是,如果我点击“搜索”按钮,应用程序不会显示“搜索”页面!

首先进入“SearchPost”动作,然后“搜索”。没有错误。但最后一行不起作用:

return View("Search"); 

该应用程序不显示视图“搜索”,只有上一页。 怎么了?


===========解决方案如下:

试试这个

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

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

理论是,既然你做了客户端Ajax请求,返回View("Search")将不会在你的情况下工作。相反,使用命令返回一个JavaScript操作结果,以将浏览器重定向到搜索页面。您可以将查询字符串参数添加到URL或其他任何您需要的内容,以传递给Search操作方法。


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)