zoukankan      html  css  js  c++  java
  • ASP.NET MVC小记

    1. 在 ASP.NET MVC 2.0 中,一个普通的Action,比如:public ActionResult News(int? pageIndex)。如果在列表页面,页首有菜单导航,那么必须显示配置pageIndex = 1 :
      <%= Html.ActionLink("新闻", "News", new { pageIndex = 1 }) %> ,只要配置一个路由即可,路由配置如下:
      
      routes.MapRoute("CompanyNewsPager", "Company/News/{pageIndex}", new
                  {
                      controller = "Company",
                      action = "News",
                      pageIndex = 1
                  });
      
    2. 关于
      public static Route MapRoute(this RouteCollection routes, string name, string url, object defaults, object constraints);
      
      的使用。比如我在Global.asax中的RegisterRoutes方法中配置了如下路由:
      routes.MapRoute("Friends", "Friends/{action}", new { controller = "Friends",action = "Index" }, new { isLoal = new LoalRouteConstraint() });
      
      那么当前客户端只能本机才可以访问/Friends/*。LoalRouteConstraint 类中的代码如下:
      using System.Web;
      using System.Web.Routing;
      
      namespace WebUI.Extensions
      {
          public class LoalRouteConstraint : IRouteConstraint
          {
              public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection)
              {
                  return httpContext.Request.IsLocal;//只允许本机匹配
              }
          }
      }
      
    3. 在Action 方法上标记[NonAction()] Attribute 表明:这个方法不是Action 方法,即不能通过浏览器访问
    4. Model 绑定只绑定UserInfo类的YouInputText属性:或者是排除某个属性:
      public ActionResult TestActionFilter([Bind(Exclude = "Id,Age")] UserInfo userInfo, FormCollection formColle)
      
      public ActionResult TestActionFilter([Bind(Include = "YouInputText")] UserInfo userInfo)
      
    5. 在一个ASP.NET MVC 应用程序中,假设存在物理路径 /Products/List/Add.aspx ,那么如果在浏览器中访问这个地址,这个 aspx 页面是会执行的。因为默认

      RouteCollection 不会对已存在的文件路由(RouteCollection.RouteExistingFiles=false),要想让 ASP.NET 路由这个URL,则把该属性值设置为true,那么
      ProductsController就会执行了。

    6. 手动初始化 UrlHelper:
      string loginUrl = new UrlHelper(filterContext.RequestContext).Action("LogOn", "Account");
    7. MVC IOC
      RouteData routeData = RouteTable.Routes.GetRouteData(filterContext.HttpContext);   // 得到当前请求的路由数据
      
      
      DependencyResolver.Current.GetService<IProductService>();  // 得到当前在 IOC 中注册的 IProductService 的实现类
       
    8. ASP.NET MVC 中尽量不要用 RedirectToRoute 来跳转,而要用 RedirectToAction 明确指定 Controller、Action,除非你在 Global.asax 配置的这个路由有明确的指定 Controller、Action,否则很可能出现死循环或者 404 错误,比如:在 Account 的 Logon 中登录成功后,跳转到 Product 的 Index 中,如果用 RedirectToRoute,很可能死循环或者跳转到 /Product/Logon 页面,因为你在路由中用了 Controller 或 Action 的默认值。
    9. ASP.NET MVC 中的 ActionDescriptor 类 或者 ControllerDescriptor 类分别表示标记在 Action 和 Controller 上面的 Attribute。
    10. ASP.NET MVC 4 中有一个 AllowAnonymousAttribute.cs 类,它可以标记在 Controller 或者 Action 上,用于跳过 AuthorizeAttribute 授权验证。
    11. 谢谢浏览...
  • 相关阅读:
    通过理解List和IList的区别,加深对接口回调的理解
    mysql学习笔记之mysqlparameter(摘)
    MSSQL表中字段更新后,视图中的字段不更新的解决办法
    如何设置firefox,使其可以支持剪贴板
    CSS图片下载器
    VS2008下.NET 单元测试工具 NUnit2.5 配置与集成方法
    discuz x1.5通过uchome注册后免激活补丁(自动激活)
    (转)七秘诀工作效率与薪水翻番
    TRIGGER OF ORACLE
    SQL LOADER 的使用
  • 原文地址:https://www.cnblogs.com/Music/p/ASP_NET_MVC_Log.html
Copyright © 2011-2022 走看看