2010-02-10 425 views
4

在mvc中,頁面不會像asp.net那樣回發,那麼我們如何在asp.net mvc2中執行回發操作。爲什麼當有人選擇一個chech box時如何執行特定的動作? 預先感謝如何在ASP.NET MVC中執行PostBack操作?

+0

我建議你閱讀並理解MVC模式(http://en.wikipedia.org/wiki/Model%E2%80 %93view%E2%80%93controller)以及它如何應用於ASP.NET MVC實現(http://www.asp.net/mvc/)。 – Lazarus 2010-02-10 12:07:23

+1

爲什麼哦,爲什麼這是被低估?對於一個新加入MVC的人來說,他們花時間在Webforms上,這是一個相當有效的問題。如果SO是有問題答案的地方,那就是獎金! =) – Rob 2010-02-10 12:25:09

回答

5

WebForms中回發模型背後的機制稱爲HTTP POST。這是用戶輸入如何傳回服務器的方式。

您可以手動完成。手動將JavaScript處理程序附加到複選框「onclick」事件,並對某個url執行POST請求。在那裏,這個請求會在你做你想做的事情時觸發一些控制器行爲。例如,更新模型(選中/取消選中該複選框)並返回POST源自的相同視圖。該視圖現在將顯示該複選框的不同狀態。

WebForms機制幾乎完全相同,儘管這些東西都是從您的抽象出來的。有了ASP.NET MVC,你需要學習如何獨立完成它(這總是一件好事)。

+0

我嘗試用'Html.BeginForm'封裝每一行,然後創建一個複選框來執行回發。但是當行動到達時,我得到一個新創建的模型,原始值全部丟失。 – Shimmy 2012-11-18 04:30:01

3

您的控制器上的MVC Action方法有點是您的'PostBack'處理程序。

從一個更簡單的例子開始;一個簡單的HTML表單發佈:

<form action="/MyController/MyAction" method="post"> 
    <input type="text" name="myName" /> 
    <input type="submit /> 
</form> 

現在在您的控制器操作中,您可以獲取發佈的值並執行您的任務。完成後,讓瀏覽器回來它需要的東西:

public class MyController: Controller 
{ 
    public ActionResult MyAction(string myName) 
    { 
     // Do something with myName 
     return new ContentResult { Content = "Hello " + myName }; 
    } 
} 

至於複選框,它是不同的。你需要學習Javascript(jQuery是最常用的庫),並使用它來發布操作。例如,您可以連接複選框'onclick()' event並執行XHR--瀏覽器特定的Javascript操作,post (you can use jQuery for that too)到您的控制器。

因此,您需要開始思考不同於webforms抽象,並參與HTML,HTTP和Javascript。

0

你可以把這樣的一個MVC剃刀頁面內:

if (Request.HttpMethod=="POST") { 
}