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"]方式接收