Asp.net MVC3基礎

   最近開始接觸Asp.net MVC, MVC即Model,Controller和View,通過看一些文檔,明白了他的基本原理,這裏保留下來作爲筆記。

   MVC通過配置url routing將web request導入到相應的controller類中,通過Controller/Action/id的格式撰寫,這不同於webform或winform的防止,不可以直接在屬性窗口中設置啓動頁面或窗體,你需要在Global文件中誰知routes的啓動Action. 例如你的Controller類名爲Ajax,Action爲Index,那麼在Global的RegisterRoutes方法中寫入:

  1. public static void RegisterRoutes(RouteCollection routes)  
  2. {  
  3.     routes.IgnoreRoute("{resource}.axd/{*pathInfo}");  
  4.   
  5.     routes.MapRoute(  
  6.         "Default"// Route name  
  7.         "{controller}/{action}/{id}"// URL with parameters  
  8.         new { controller = "Ajax", action = "Index", id = UrlParameter.Optional } // Parameter defaults  
  9.     );  
  10.   
  11. }  


你可以在Controller類中定義自己的Action,並通過Add View的方式添加對應的View,return View()將自動轉入自己的View,如果你需要導入到其他的View中,使用RedirectToAction()方法,你也可以根據自己的需要設置參數。

 

View一般用於生成HTML代碼, 你可以通過使用@字符寫對應的語句(MVC3,MVC2應爲<%%>),例子:

  1. <ul>  
  2. @for (int i = 0; i < ViewBag.NumTimes; i++)  
  3. {  
  4.     <li>ViewBag.Message</li>   
  5. }  
  6. </ul>  


Model爲實體類,你可以建立自己的實體,如果你有自己的實體類時,可以在創建View的時候通過選生成強類型的view, 這包括基本的template可供選擇,如Create,delete,edit,detail等形式,具體在Add View的對話框裏可以找到,有了Model, 你可以在controller類中自由的操作model的實例,你也可以在View中使用,不過使用前需要在View中聲明,並且使用@HTML.DisplayFor,EditFor,LabelFor等方法建立你需要表現的形式

  1. @model MvcApplication1.Models.Person  
  2.   
  3. @{  
  4.     ViewBag.Title = "Create";  
  5. }  
  6.   
  7. <h2>Create</h2>  
  8.   
  9. <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>  
  10. <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>  
  11.   
  12. @using (Html.BeginForm()) {  
  13.     @Html.ValidationSummary(true)  
  14.     <fieldset>  
  15.         <legend>Person</legend>  
  16.   
  17.         <div class="editor-label">  
  18.             @Html.LabelFor(model => model.Name)  
  19.         </div>  
  20.         <div class="editor-field">  
  21.             @Html.EditorFor(model => model.Name)  
  22.             @Html.ValidationMessageFor(model => model.Name)  
  23.         </div>  
  24.   
  25.         <div class="editor-label">  
  26.             @Html.LabelFor(model => model.Age)  
  27.         </div>  
  28.         <div class="editor-field">  
  29.             @Html.EditorFor(model => model.Age)  
  30.             @Html.ValidationMessageFor(model => model.Age)  
  31.         </div>  
  32.   
  33.         <p>  
  34.             <input type="submit" value="Create" />  
  35.         </p>  
  36.     </fieldset>  
  37. }  
  38.   
  39. <div>  
  40.     @Html.ActionLink("Back to List", "Index")  
  41. </div>  


 

傳值方式:

通過ViewData["a"]=a;

進行簡單傳值,聲明週期爲View的生命週期,也支持傳向不同的Routes

通過ViewBag

可以接收類實體的形式傳值,對應Action中使用ViewBag.a=model; View中使用@Viewbag.a.modelfield顯示

通過View參數形式

return View(model)如上面的例子

通過Html.BeginForm的方式

你需要在接收頁面使用Request["controlID"]接收

通過url Get傳值

同難過使用url?a=a的形式傳入,在對應Action中使用Request.QueryString["a"]方式接收

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章