asp.net MVC (1) 浅析MVC及新建Hellowrold
MVC的详细介绍,请参考微软官方文档 https://msdn.microsoft.com/zh-cn/library/dd381412(v=vs.108).aspx
我的浅薄理解:M(Model)是一个类文件,在Models文件夹下,相当于数据库的一个表,类文件下的属性对应表中的字段。V(View) 负责前端显示,提供对Model的CRUD操作界面及与Controlor的交互。C(Controler) 也是一个类文件,自动生成Model的CRUD函数,响应View的请求,处理Model的数据。
新建一个Helloworld 项目。vs2015 MVC 5 , 新建->项目->选择web->选择ASP.NET Web Application(.NET Framework),修改项目名称,确定后在下个画面选择MVC,在右侧点击“更改身份验证”按钮,选择不验证。取消云托管,点击确定。 VS自动生成MVC 模板,此时按F5,或者Ctrl+F5 运行项目,此时浏览器就会登陆新建的项目主页。
asp.net 自动创建了一个web app,有主页、关于、联系方式三个页面,鼠标点击标题栏可以自由切换不同页面。
打开解决方案资源管理器,Controler 文件夹下面 有个 HomeControler.cs 文件。打开该文件,发现HomeControler.cs 内有 Index()
About() 和Contact()三个“方法”,只不过这三个方法的返回类型为 ActionResult ...后面会具体介绍这个内容。 在Views的文件夹下面有
一个Home文件夹,展开后,发现有三个 csthml 文件,名称分别是 Index 、About和Contact 。跟HomeControler.cs 中的方法名称巧合
的一致。不由得让人怀疑,难道系统自动生成View下的文件时根据Controler的方法动作名称一一对应生成的吗。
继续在浏览器留言发布的网页,主页地址为 localhost:XXXX, 其中端口号是IIS Express 根据项目自动分配的一个端口,不同项目分配的不一样
当你点击“关于”进入“关于”界面后,发现地址变为 localhost:xxxx/Home/About 了。进入“联系方式”页面,地址变为localhost:xxxx/Home/Contact 了
这个URL地址是什么意思。难道访问页面就是访问 controler 下面的动作(Action)吗。(URL ... /Controler/Action) 那为什么没有 /Home/Index
于是我在“联系我们”页面的地址栏修改地址为 localhost:XXXX/Home/Index 画面直接跳转到主页。
于是我找到了 App_Start文件夹下面的RouteConfig.cs文件。
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
原来URL地址路由映射确实是/Controller/action 后面id 以后肯定会用到的。而 /Home/Index 被定为为dufaults,所以主页其实就是引用的Index动作。
以上只是对路由和Contorller 、View之间的关系进行简单地阐述,后续还会继续用到。
下面怎么在网页显示一个HelloWord呢
选择Controller,右键添加/控制器,选择MVC5 空控制器 命名为HelloworldController。注意:控制器的类命名都要带着Controller尾巴,要不不好用。
确定后,系统会自动创建HelloworldController.cs文件,同时在Views文件夹下面自动添加一个Helloworld空文件夹。因为我添加的是 MVC5 空控制器,
因此VS不会自动根据控制器动作生成View文件。如果你现在运行,在url地址中输入 localhost:xxxxx/Helloworld ,网页肯定会报错误,提示没视图文件。
在没有View下的index.cshtml文件,我们怎么在网页上输出Hello World呢。 修改 helloworldController.cs 文件的Index().
系统自动生成的
public class HelloWorldController : Controller
{
// GET: HelloWorld
public ActionResult Index()
{
return View();
}
}
修改为
public class HelloWorldController : Controller
{
// GET: HelloWorld
public string Index()
{
return "Hello World! This is my first MVC APP";
}
}
然后保存,运行,修改URL loncahost:XXXX/Helloworld 网页中就会出现 你想看到的内容。
当然你可以再给 HelloWorldController.cs 文件增加一个action . welcome()
public string welcome()
{
return "This is my welcome Action";
}
那么,访问welcome 的url 地址为loncahost:XXXX/Helloworld/weicome
当然路由配置文件中还有 id这一级呢。怎么用呢。我们修改welcome动作
public string welcome(string name ,int num=1)
{return HttpUtility.HtmlEncode("Hello"+name+", Num is:"+num);
}
然后保存运行,在url地址中输入 localhost:xxxx/Holloworld/welcome?name=abc&id=123
你会发现结果跟你想的一样。