C#MVC

最近没有更新博客。罪过!

因为最近一直在忙于新版本上线和旧版本替换,加上最近开始做C#(大学和室友弄过一个ASP.net的小工具)方面的东西。

C#的知识根本早早忘光了,这几天忙着看看之前的书籍了解下最新C#的东西,发现微软最新的MVC已经更新MVC4(VS2012,Framework4.5)。

因为之前东西全部忘记的缘故,加上java开发方面对MVC思想的理解及这几天看C#mvc书,觉得C#的MVC是如此强大。下面简单的解释下它

MVC不必多少大家都知道(不知道的请度娘,或者gg下上面的定义写的非常详细)。个人觉得C#的MVC重点在M和V。其中V整合JQuery的东西(包含JQuery的UI),html5可以说非常之强大。M层更加对象编程。也是的前后交换不局限JSON和对象点属性方式。同时也引入注解方式。是的程序更简洁。

下面是摘录书籍一部分:希望多初学MVC的哥们有点帮助。欢迎大家讨论学习

新创建的StoreController控制器已经有了一个Index方法,下面将利用这个方法实现在

页面上展示的功能。另外,还需要添加两个额外的方法来实现上

述的其他两个功能,这两个方法分别是Browse和Details。

控制器里的这些方法(Index、Browse和Details)被称为控制器操作。正如上述的

HomeController.Index()操作方法那样,控制器操作的工作是响应URL请求,执行合适的操

作,并向浏览器或者是单击这个URL的用户做出响应。

想要了解控制器操作是如何工作的,可按照以下步骤操作:

(1)将Index()方法的签名改为string(而不是ActionResult),然后将返回值改为“Hello

fromStore.Index()”,如下所示:

//

//GET:/Store/

publicstringIndex()

{

return"HellofromStore.Index()";

}

(2)添加对商店的Browse操作方法,将返回值设为“HellofromStore.Browse()”;添加

Details操作方法,将返回值设为“HellofromStore.Details()”。控制器StoreController的完

整代码如下所示:

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Linq;

usingSystem.Web;

usingSystem.Web.Mvc;

namespaceMvcMusicStore.Controllers

{

publicclassStoreController:Controller

{

//

//GET:/Store/

publicstringIndex()

{

return"HellofromStore.Index()";

}

//

//GET:/Store/Browse

publicstringBrowse()

{

return"HellofromStore.Browse()";

}

//

//GET:/Store/Details

publicstringDetails()

{

return"HellofromStore.Details()";

}

}

}

(3)重新运行项目,然后浏览以下URL:

●/Store

●/Store/Browse

●/Store/Details

访问这些URL会调用控制器中的操作方法,然后返回响应字符串。

2.经验总结

从以上这个快速实验中可以得出以下几个结论:

●不需要做任何额外配置,浏览到/Store/Details就可以使StoreController类中的Details

方法得到执行,这就是操作中的路由。本章后面还会对路由稍做介绍,第9章将会

对此进行详细介绍。

●尽管是使用VisualStudio工具来创建这个控制器类,但它却是个非常简单的类。能

看出一个类是控制器类的仅有方式,就是该类继承自System.Web.Mvc.Controller。

●已经利用一个控制器在浏览器里显示了文本——没有用到模型或视图。尽管在

ASP.NETMVC中模型和视图非常有用,但控制器才是真正的核心。每一个请求都

必须通过控制器处理,然而其中有些是不需要利用模型和视图的。

3控制器操作中的参数

前面的例子写出的是常量字符串。下一步就是让它们通过响应URL传进来的参数动态

地执行操作。按照以下步骤来实现:

(1)将Browse操作方法修改为检索一个从URL传过来的查询字符串值。可以通过向

操作方法中添加一个“genre”参数来实现这个功能。然后,当这个方法被调用时,ASP.NET

MVC会自动将名字为“genre”的查询字符串或从表单提交的参数传递给Browse操作方法。

//

//GET:/Store/Browse?genre=?Disco

publicstringBrowse(stringgenre)

{

stringmessage=

HttpUtility.HtmlEncode("Store.Browse,Genre="+genre);

returnmessage;

}

HTML编码的用户输入

利用实用方法HttpUtility.HtmlEncode来预处理用户输入。这能阻止用户向视图中用链

接注入JavaScript代码或HTML标记,比如/Store/Browse?Genre=<script>window.location=

'http://hacker.example.com'</script>。

(2)浏览到/Store/Browse?Genre=Disco

这表明控制器操作可以通过将查询字符串作为其操作方法的参数来接收其值。

(3)修改Details操作方法使其读取和显示一个名称为ID的输入参数。不像前面的方

法那样把ID值作为一个查询字符串参数嵌入,这里是将ID值直接嵌入到URL中,如

/Store/Deatila/5。

ASP.NETMVC在不需要任何额外配置的情况下可以很容易地做到这一点。ASP.NET

MVC的默认路由约定,就是将操作方法名称后面的URL的这个片段作为名称为ID的参

数。如果操作方法中有名称为ID的参数,那么ASP.NETMVC将会自动将这个URL片段

作为参数传递过来。

//

//GET:/Store/Details/5

publicstringDetails(intid)

{

stringmessage="Store.Details,ID="+id;

returnmessage;

}

(4)运行应用程序,浏览/Store/Details/5。

像前面的示例演示的那样,控制器操作感觉就好像是Web浏览器直接调用控制器类中

的方法。类、方法和参数都被具体化为URL中的特定路径片段或查询字符串,结果就是一

个返回给浏览器的字符串。这就进行了极大的简化,而忽略了下面这些细节:

●路由将URL映射到操作的方式。

●将视图作为模板生成向浏览器返回的字符串(通常是HTML格式)。

●操作很少返回原始的字符串;它通常返回合适的ActionResult来处理像HTTP状态

码和调用视图模板系统这样的事项。

控制器提供了很多自定义和扩展的机会,但是您可能会发现很少能用到这些内容(如果

有的话)。在一般应用中,控制器通过URL被调用,然后执行自定义的代码并返回一个视

图。先记住这些内容,后面我们会详述关于控制器如何定义、调用和扩展的底层细节,这

些底层内容以及其他高级主题将在第14章中进行讲解。现在已经很好地学习了控制器如何

与视图结合的内容,这部分内容将在第3章中进行详细介绍。

小结

控制器是MVC应用程序的“指挥员”,它精心紧密地编排用户、模型对象和视图的交

互。同时控制器还负责响应用户输入,操纵正确的模型对象,然后选择合适的视图显示给

用户以作为对最初用户输入的响应。

本章讲解了控制器独立于视图和模型工作的基本原理,讲解了应用程序如何执行代码

来响应URL请求,这些都是处理用户界面的必备知识。接下来的第3章将介绍视图的有

关内容

c#

相关推荐