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 MVC (1) 浅析MVC及新建Hellowrold



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

你会发现结果跟你想的一样。