2015-06-11 64 views
0

我有我的母版的搜索按鈕下面的代碼: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"); 

該應用程序不顯示視圖「搜索」,只有上一頁。 怎麼了?

+0

您有JavaScript函數'MySaveFunc',它可以通過AJAX停止表單的自然提交過程併發布帖子。如果您在成功回調中查看'data'的內容,則呈現視圖的HTML將位於此處。 – scgough

+0

Ajax調用在同一頁上說,他們不重定向 –

+0

'runat =「server」'是Web窗體,而不是MVC(刪除它)。 ''onclick =「javascript:MySaveFunc(txt_search);''會傳遞未定義給你的函數,因爲沒有定義'txt_search'。'return RedirectToAction(」Search「,new {txt_name = txt_name});'不工作,因爲你正在一個ajax調用你究竟想要做什麼? –

回答

0

試試這個

[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

它不一致。有一次 - 一切運作良好,其他時間 - 不工作。非常奇怪:( –