MVC通過配置url routing將web request導入到相應的controller類中,通過Controller/Action/id的格式撰寫,這不同於webform或winform的防止,不可以直接在屬性窗口中設置啓動頁面或窗體,你需要在Global文件中誰知routes的啓動Action. 例如你的Controller類名爲Ajax,Action爲Index,那麼在Global的RegisterRoutes方法中寫入:
- public static void RegisterRoutes(RouteCollection routes)
- {
- routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
- routes.MapRoute(
- "Default", // Route name
- "{controller}/{action}/{id}", // URL with parameters
- new { controller = "Ajax", action = "Index", id = UrlParameter.Optional } // Parameter defaults
- );
- }
你可以在Controller類中定義自己的Action,並通過Add View的方式添加對應的View,return View()將自動轉入自己的View,如果你需要導入到其他的View中,使用RedirectToAction()方法,你也可以根據自己的需要設置參數。
View一般用於生成HTML代碼, 你可以通過使用@字符寫對應的語句(MVC3,MVC2應爲<%%>),例子:
- <ul>
- @for (int i = 0; i < ViewBag.NumTimes; i++)
- {
- <li>ViewBag.Message</li>
- }
- </ul>
Model爲實體類,你可以建立自己的實體,如果你有自己的實體類時,可以在創建View的時候通過選生成強類型的view, 這包括基本的template可供選擇,如Create,delete,edit,detail等形式,具體在Add View的對話框裏可以找到,有了Model, 你可以在controller類中自由的操作model的實例,你也可以在View中使用,不過使用前需要在View中聲明,並且使用@HTML.DisplayFor,EditFor,LabelFor等方法建立你需要表現的形式
- @model MvcApplication1.Models.Person
- @{
- ViewBag.Title = "Create";
- }
- <h2>Create</h2>
- <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
- <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
- @using (Html.BeginForm()) {
- @Html.ValidationSummary(true)
- <fieldset>
- <legend>Person</legend>
- <div class="editor-label">
- @Html.LabelFor(model => model.Name)
- </div>
- <div class="editor-field">
- @Html.EditorFor(model => model.Name)
- @Html.ValidationMessageFor(model => model.Name)
- </div>
- <div class="editor-label">
- @Html.LabelFor(model => model.Age)
- </div>
- <div class="editor-field">
- @Html.EditorFor(model => model.Age)
- @Html.ValidationMessageFor(model => model.Age)
- </div>
- <p>
- <input type="submit" value="Create" />
- </p>
- </fieldset>
- }
- <div>
- @Html.ActionLink("Back to List", "Index")
- </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"]方式接收