asp.net MVC 3月19號正式發布以來備受關注,所以今天趕著潮流的也看了以下,是的 挺不錯的,一些思想有點類似於JavaEE中的Struts,下面的圖是我轉載的寫得很能讓人理解。
我描述一下,URL提交由映射系統攔截,它會根據(Global.asax)裡面的映射規則進行匹配,
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);
這個是預設制定的路由規則(也可自己制定),就按預設的來說一下。
攔截到後根據此規則獲得到ControllerName(ControllerName 是你寫的繼承於Controller的類的去除Controller的名字,例如你有個UserController 而這個控制類映射的名字就是User)
找到了這個Controller就會去找這個Controller類中的方法(即傳回型別是ActionResult的),方法名是由ControllerName/後的映射決定。如上規則後面還可以跟參數,也可不加,預設是空
然後就會執行方法,方法會返回一個ActionResult類型,根據這個結果尋找對應的View
注意:view頁面好像不能隨便建,例如,如上有個UserController ,那它對應的view頁面應該會到View檔案夾(預設)下User這個檔案夾下尋找(要與UserController名字對應)
來個最簡單的例子
檔案結構:
//很簡單就向ViewData放個使用者名稱
public class DemoController : Controller
{
public ActionResult Index()
{
ViewData["userName"] = "zhangsan";
return View("Index");
}
}
Index.aspx頁面顯示使用者名稱
<div>
使用者名稱:
<%=ViewData["userName"].ToString() %>
</div>
訪問路徑:http://localhost:13595/Demo/Index
Demo就是DemoController 的首碼
Index是DemoController 中的方法Index
後感:個人覺得有點這種驅動型有點類似Struts,根據名字通過反射找到該名字的Action然後進行一些業務處理在返回一個值,該值決定要返回的頁面或action。呵呵 也剛看半小時 有這種感覺!有錯的地方請指教,繼續學習。。。。