2010-03-03 67 views
0

我是一般的網絡編程新手,所以這可能是一個非常簡單的問題。但是我在網上找不到任何東西。如何從按鈕點擊調用控制器而不使用ajax mvc

我想要做的就是調用我的控制器與類型化的搜索字符串,並從數據庫返回結果和分頁結果。現在我正在使用按下按鈕時調用的函數。該函數看起來像這樣:

function SubmitSearch() { 

    var searchBox = document.getElementById('searchBox'); 
    var searchButton = document.getElementById('SearchButton'); 

    $.post("MyController/MyAction/", 
    { 
     searchString: searchBox.value, 
     page: null 
    }, function(result) { 
     $('#searchResults').html(result); 
     searchButton.value = "Search"; 
    }); 
} 

會發生什麼是我的控制器被調用,並且我的searchResults div填充結果和分頁。用戶可以點擊返回的任何搜索結果查看詳細信息。

問題是當用戶點擊瀏覽器的「後退」按鈕,頁面返回到搜索輸入前的狀態,這是因爲ajax調用。我想要做的是,打電話給控制器,並讓頁面加載像谷歌會。而不是使用PartialView,我會使用View(我的猜測)。

我將如何調用控制器並將頁面RELOAD與結果進行比較。我必須錯過一些基本的東西,因爲這看起來應該很容易。

回答

2

如果你不希望使用AJAX,那麼你需要把你的文本字段和表單元素在頁面上,這樣的:

<form action="MyController/MyAction/" method="get"> 
    <input id="SearchBox" name="SearchBox" type="text" /> 
    <button type="submit">Search</button> 
</form> 

然後在您的控制器列表返回視圖結果。

你可能也想看看RESTful網址和PRG (Post, Redirect, Get)模式來維持後退按鈕的完整性,實現網頁等正確的書籤

+1

謝謝,我去了這個解決方案,除了我用的MVC方式(<%使用Html.BeginForm(「MyAction」,「MyController」){%> .... – Darcy 2010-03-03 16:35:29

1

我想你可能實際上正在尋找一個AJAX歷史庫來幫助當後退按鈕被按下而不是改變你的應用程序。看看這個blog post

+0

我真的很想重新加載頁面。在我的Action中,我有一些草率的編碼來處理分頁和搜索頁面(我必須根據調用是否是ajax調用不同的視圖[我的其他分頁頁面重新加載頁面]) – Darcy 2010-03-03 15:29:24

+0

您主要的問題是你的例子不使用Ajax,因此很難複製。您的挑戰是讓「返回」操作返回到您的控制器,就好像標準和分頁內的頁面都觸發了搜索一樣。在後臺使用db做這件事也會使返回的數據集自原始演示文稿以來發生變化,並且沒有任何保證。 – Lazarus 2010-03-03 15:49:17

1

.aspx的:

<% using (Html.BeginForm<MyController>(m => m.MyAction(null)) { %> 
    <%= Html.TextBox("q"); %> 
<% } %> 
// Listing 

控制器:

public class MyController : Controller 
{ 
    public ActionResult MyAction(string q) 
    { 
     var repository; // instance of your repository. 

     if (String.IsNullOrEmpty(q)) 
     { 
      return View(repository.GetAllBlogs()); 
     } 
     return View(repository.SearchBlogs(q)); 
    } 
} 
+0

http://weblogs.asp.net/scottgu請閱讀/archive/2010/10/22/asp-net-mvc-3-layouts.aspx – Penguen 2011-12-20 21:25:16

相關問題