读书频道 > 网站 > 网页设计 > ASP.NETMVC5高级编程(第5版)
2.3.3 控制器操作中的参数
15-04-21    下载编辑
收藏    我要投稿   

本文所属图书 > ASP.NETMVC5高级编程(第5版)

作为Microsoft备受欢迎的MVC技术的最新版本,MVC 5是一个成熟的Web应用程序框架,支持快速的、TDD友好的开发。MVC允许开发人员创建动态的、数据驱动的网站。这样的网站具有复杂的功能,如单页面应用程序、针对移立即去当当网订购

前面的例子写出的是常量字符串。下一步就是让它们通过响应URL传进来的参数动态地执行操作。按以下步骤来实现:

(1) 把Browse操作方法修改为,检索从URL传过来的查询字符串值。可以通过在操作方法中添加一个string类型的“genre”参数来实现这个功能。然后,当这个方法被调用时,ASP.NET MVC会自动将名为“genre”的查询字符串或表单提交参数传递给Browse操作方法。

 

//
// GET: /Store/Browse?genre=?Disco
public string Browse(string genre)
{
string message =
HttpUtility.HtmlEncode("Store.Browse, Genre = " + genre);
return message;
}

HTML编码的用户输入

利用方法HttpUtility.HtmlEncode来预处理用户输入。这样就能阻止用户用链接向视图中注入JavaScript代码或HTML标记,比如//Store/Browse?Genre=<script>window.location= 'http://hacker.example.com'</script>。

(2) 浏览到/Store/Browse?Genre=Disco,结果如图2-14所示。


 

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

(3) 修改Details操作方法,使其读取和显示一个名为ID的输入参数。这里不像前面的方法那样把ID值作为一个查询字符串参数,而是将ID值直接嵌入到URL中,如 /Store/Details/5。

ASP.NET MVC在不需要任何额外配置的情况下可以很容易地做到这一点。ASP.NET MVC的默认路由约定,就是将操作方法名称后面URL的这个片段作为一个参数,该参数的名称为ID。如果操作方法中有名为ID的参数,那么ASP.NET MVC会自动将这个URL片段作为参数传递过来。

//
// GET: /Store/Details/5
public string Details(int id)
{
string message = "Store.Details, ID = " + id;

return message;
}


像前面示例演示的那样,控制器操作感觉就像是Web浏览器直接调用控制器类中的方法。类、方法和参数都被具体化为URL中的特定路径片段或查询字符串,结果就是一个返回给浏览器的字符串。这就进行了极大的简化,而忽略了下面这些细节:

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

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

●操作很少返回原始的字符串;它通常返回合适的ActionResult来处理像HTTP状态码和调用视图模板系统这样的事项。

控制器提供了很多自定义和扩展的功能,但是我们很少能用到这些内容。在一般应用中,控制器通过URL被调用,然后执行自定义的代码并返回一个视图。先记住这些内容,后面我们会详述关于控制器如何定义、调用和扩展的底层细节,这些底层内容以及其他高级主题将在第15章中进行讲解。现在已经学习了足够的控制器知识,可以与视图结合起来使用了,第3章中会对这部分内容进行详细介绍。


 



点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:1.3 功能
下一篇:1.5 小结
相关文章
图文推荐
JavaScript网页动画设
1.9 响应式
1.8 登陆页式
1.7 主题式
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做最好的IT技术学习网站