默认开发环境vs2010,MVC2.0。这篇博客中我想以另外一种方式能让大家来领悟MVC,没有讲道理只有跟着做。
MVC对于入门级的ASP.NET开发者来说太难了,习惯了那种CodeBehind的过程,在来学习MVC就像修仙的人修炼了几年的内功心法忽然得到了另外一种更快更好内功,但这内功需要你把原来修炼好的真气流转筋脉换掉。你只能忍痛自断筋脉重新在来,因为你不忍痛变化的话你所能达到的最高境界就不能突破。自断筋脉的过程是痛苦的,初学MVC也是相当痛苦的,淫荡一点的话,不痛哪来的快乐,好了废话少说。
新建一个MVC项目,生成解决方案,启动调试
这个是不做任何修改所能看到的页面。
好,现在我们打开Controllers文件夹下面的HomeController.cs修改其中的代码
public ActionResult Index()
{
//ViewData["Message"] = "欢迎使用 ASP.NET MVC!";
ViewData["Message"] = "初学MVC真难!";
return View();
}
重新生成。
看一下我们修改的东西在哪显示的,打开Views文件夹下面的Home文件夹,打开Index.aspx。
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<h2><%: ViewData["Message"] %></h2>
<p>
若要了解有关 ASP.NET MVC 的更多信息,请访问 <a href="http://asp.net/mvc" title="ASP.NET MVC 网站">http://asp.net/mvc</a>。
</p>
</asp:Content>
我们看到了这么一段代码,我们修改的东西就是在这显示出来的,MVC也不过如此,嘿嘿打打气!
我们在页面上点击一下关于按钮,注意看我们的地址栏的变化。
上面一个是点关于以后的,下面一个是点击主页按钮的。然后我们在地址栏中输入
结果你懂的。这个地址和我们开始显示的那个页面是一样的。造成这个地方的原因呢,在这里。Global.asax.cs
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");//不认识么?那就别管他了!就像你刚开始HELLO WORLD!的时候Main方法参数,不懂的先揭过去。
//机关在这里。我们来修改一下!
routes.MapRoute(
"Default", // 路由名称
"{controller}/{action}/{id}", // 带有参数的 URL
//new { controller = "Home", action = "Index", id = UrlParameter.Optional } // 参数默认值
new { controller = "Home", action = "About", id = UrlParameter.Optional }
);
}
在来打开我们的页面,注意地址栏和页面内容!
好了完成了Route的修改了。简单把!
在来看文章的第三部分,这次我们修改的地方多一点。我们先在页面上点一下登陆,然后看下登陆页面。根据地址栏里我们应该可以知道怎么去找登陆页面了。直接拿来了Views/AccountLogOn.aspx 说实话第一次打开这个页面的时候我顿时虎躯一震,菊花一紧。这你妈太坑爹了把,一堆的小黄括号,你当你是成人片啊!竟然还有using
这东西也能在前台页面上放,在仔细看来这你妈竟然是一个方法,方法中还嵌套<P> <div>这难道就是我要碎的筋脉么!确实是。
<asp:Content ID="loginContent" ContentPlaceHolderID="MainContent" runat="server">
<h2>登录</h2>
<p>
请输入用户名和密码。 <%: Html.ActionLink("注册", "Register") %> 如果您没有帐户。
</p>
<% using (Html.BeginForm()) { %>
<%: Html.ValidationSummary(true, "登录不成功。请更正错误并重试。") %>
<div>
<fieldset>
<legend>帐户信息</legend>
<div class="editor-label">
<%: Html.LabelFor(m => m.UserName) %>
</div>
<div class="editor-field">
<%: Html.TextBoxFor(m => m.UserName) %>
<%: Html.ValidationMessageFor(m => m.UserName) %>
</div>
<div class="editor-label">
<%: Html.LabelFor(m => m.Password) %>
</div>
<div class="editor-field">
<%: Html.PasswordFor(m => m.Password) %>
<%: Html.ValidationMessageFor(m => m.Password) %>
</div>
<div class="editor-label">
<%: Html.CheckBoxFor(m => m.RememberMe) %>
<%: Html.LabelFor(m => m.RememberMe) %>
</div>
<p>
<input type="submit" value="登录" />
</p>
</fieldset>
</div>
<% } %>
好了 不要激动了,我们还是回来继续修改把。不过在继续修改之前要提醒各位一下 Html.LabelFor()这东西你可以不知道,但是m => m.UserName这东西你可以定要知道啊 !
打开Controllers下面的AccountController.cs,修改没有属性修士的LogOn()方法。其实就是一个动作,英文名称叫Action!
public ActionResult LogOn()
{
LogOnModel model = new LogOnModel();//这就是传说中的模型,logon的意思就是登陆,整句话就是登陆模型的意思!再不懂我就真没办法了!
model.UserName = "我就是UserName!";
return View(model);//这个地方跟下面注释的那个不一样啊!
// return View();//原来就着一个东西,别管他!
}
现在来看下我们的登陆页成了什么样子了!
这个是刚刚加载没有任何操作的时候显示的页面。不一样的地方就是我们修改的地方,自己琢磨把!
这里没有说到从页面回传数据的时候是怎样的,主要是在多点可能新手就接受不了了!MVC,本来就是打破原来的架构开始学起来困难很正常,习惯了就好!