在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
以下是本人学习 ASP.NET MVC 3 时的总结,很简单,高手慎入。 1. 在母版页 _Layout.cshtml 中定义 @RenderBody(),表示需要在子页面中要替代的。 @{
2. @Html.Partial("_LogOnPartial") 依旧和 MVC 2 一样,表示应用一个 “部分页” 3. 在母版页中可以利用 IsSectionDefined 判断子页面中是否定义了某个 Section,RenderSection 表示呈现子页面中的 Section 母版页: <div style="border:1px solid red; text-align:center; background-color:White;">
子页面: @section footer
4. IsPost 判断是否是 POST 提交,IsAjax 判断是否是 AJAX 请求。 @if (IsPost || IsAjax) { } 5. Request.Unvalidated().Form["ProductDesc"] 表示获取客户端输入的带有 Html 字符串的“产品描述”,如果直接用 Request.Form["ProductDesc"] 将抛出异常:从客户端(ProductDesc="desc<hello></hello>")中检测到有潜在危险的 Request.Form 值。 6. @wrapper 默认 Html 编码。 string warpper = "<strong>Bruce说:我是最棒的!</strong>"; /* 原样输出 */
如果不想编码, HtmlString warpper2 = new HtmlString("<strong>我是最棒的!</strong>"); /* 显示粗体文字 */
7. @{} 告诉 Razor 模板引擎这里面是 C# or VB 的代码区域,如果想写 html 标签,则直接写就可以了,比如:写 <br />。如果想写普通的文字,则需要把它包含在 <text></text> 中,或者 @: 一下。就表示又告诉 Razor 模板引擎,这里重新回到 文本区域。比如:看下面这个例子: <div> 输出结果: 欢迎来到MVC 3.0 欢迎来到MVC 3.0 Razor View Engine
8. @* 这里是注释区域 *@ 9. @() 表示单行 C# or VB 代码。 10. @@ 表示输出一个普通的 @ 字符。 11. 在开发阶段,如果你想调试输出某个类或属性时,请调用 System.Web.Helpers.ObjectInfo.Print ,比如: @ObjectInfo.Print(Request.Headers) 12. @ServerInfo.GetHtml() 表示调用 System.Web.Helpers.ServerInfo.GetHtml ,以显示服务器环境信息。 13. 如果 ViewBag.AllSimpleInfo 是一个 dynamic 类型。 <h4>以下是产品的简单信息</h4>
14. 在某个 Controller 中禁用 Session。 [SessionState(SessionStateBehavior.Disabled)] 15. Action 上面标记 [OutputCache(Duration=6000)] /* 不再要求 VaryByParam 参数,自动检测 */ 16. @functions 的使用 @{
@{ 18. ASP.NET MVC 3 中 ActionResult 的子类:
/// <summary> /// 删除文章种类 /// </summary> /// <returns></returns> [HttpGet] public ActionResult deleteCategory(int id = 5) { return Content("删除成功!" + id); }
20. 关于 RenderBody, RenderPage and RenderSection methods in MVC 3,请看这里:http://www.codeproject.com/Articles/383145/RenderBody-RenderPage-and-RenderSection-methods-in 21. 关于路由的配置,可以参考: routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); // 忽略处理程序 routes.IgnoreRoute("Content/{*pathInfo}"); // 忽略静态文件 routes.IgnoreRoute("m/Content/{*pathInfo}"); // 忽略静态文件 routes.IgnoreRoute("Scripts/{*pathInfo}"); // 忽略 javascript routes.IgnoreRoute("Areas/{*pathInfo}"); // 忽略 areas routes.IgnoreRoute("m/Areas/{*pathInfo}"); // 忽略 areas routes.IgnoreRoute("{*allgif}", new { allgif = @".*\.gif(/.*)?" }); // 忽略对路径中包含 .gif 的 URL 路由 routes.IgnoreRoute("{*alljpg}", new { alljpg = @".*\.jpg(/.*)?" }); // 忽略对路径中包含 .jpg 的 URL 路由 routes.IgnoreRoute("{*allpng}", new { allpng = @".*\.png(/.*)?" }); // 忽略对路径中包含 .png 的 URL 路由 routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" }); // 忽略对路径中包含 favicon.ico 的 URL 路由 routes.IgnoreRoute("{*undefined}", new { undefined = @"(.*/)?undefined(/.*)?" }); // 忽略对路径中包含 undefined 的 URL 路由 routes.MapRoute( "SiteMap", // 路由的名称 "sitemap", // 路由匹配的 URL new { controller = "SiteMap", action = "Index" }, // 默认值 new string[] { "WebMvcCommon.Controllers" } // 命名空间 ); 22. 我实在不明白为什么在 MVC 的源码中,竟然还要引用 System.Web.UI,难道是历史遗留问题?
谢谢浏览! |
请发表评论