zoukankan      html  css  js  c++  java
  • Asp.net Core

    1路由

      路由模版:

      (1)在startup.cs或者属性中定义

      (2描述URL路径如何匹配Actions

        (3)用于产生URLs链接,这些产生的链接通常在响应中返回

         路由两种:传统路由和属性路由。将路由放置在Controller或Action上使它成为属性路由。终端路由-在ASP.NET Core 3.0中新增的默认路由系统。

         路由配置:UseRouting(),UseEndpoints。调用UseEndpoints的MapControllers方法匹配Controller的属性路由,调用MapControllerRoute或MapAreaControllerRoute匹配传统路由和属性路由。

         1.1 传统路由

      传统路由只匹配app中定义的Action和Contoller的联合,这是为了简化传统路由重叠的场景。使用MapControllerRoute,MapDefaultControllerRoute和MapAreaContollerRoute自动基于触发顺序给它们的

        enderpoints赋值(顺序)。路由出现的越早,具有更高的优先级。传统路由依赖顺序。一般而言,带有area的路由应该放置在前面因为它们比没有area的路由更加具体。专用传统路由匹配所有的路由参数例如{*article}使路由匹配范围太广,意味着你想匹配的其他路由会被它匹配上,将这种路由放置在路由表后面来阻止无匹配。

         public IActionResult Edit(int id)
            {
                return ControllerContext.MyDisplayRouteInfo(id);
            }
    
            [HttpPost]
            public IActionResult Edit(int id, Product product)
            {
                return ControllerContext.MyDisplayRouteInfo(id, product.name);
            }

    /Products33/Edit/17 ,Post请求时匹配下面,其他请求时匹配上面

    路由名称在应用范围内必须是唯一的,对URL匹配和处理请求无影响,只用于产生URL。

    1.2 属性路由

     REST API应该使用属性路由来将app的功能建模成一组资源(操作由HTTP动词表示)。属性路由使用一系列属性来匹配Action。属性路由匹配更加具体。使用属性路由,Contoller和Action的名称就无所谓了,除非使用了令牌替换。

            [Route("")]
            [Route("Home")]
            [Route("Home/Index")]
            [Route("Home/Index/{id?}")]
            public IActionResult Index(int? id )
            {
                return View();
            }
    
            [Route("Home/Privacy")]
            [Route("Home/Privacy/{id?}")]
            public IActionResult Privacy(int? id)
            {
                return View();
            }        
     [Route("")]
        [Route("Home")]
        [Route("Home/Index")]
        [Route("Home/Index/{id?}")]
        public IActionResult MyIndex(int? id)
        {
            return ControllerContext.MyDisplayRouteInfo(id);
        }
    
        [Route("Home/About")]
        [Route("Home/About/{id?}")]
        public IActionResult MyAbout(int? id)
        {
            return ControllerContext.MyDisplayRouteInfo(id);
        }

    使用令牌替换

       [Route("")]
        [Route("Home")]
        [Route("[controller]/[action]")]
        public IActionResult Index()
        {
            return ControllerContext.MyDisplayRouteInfo();
        }
    
        [Route("[controller]/[action]")]
        public IActionResult About()
        {
            return ControllerContext.MyDisplayRouteInfo();
        }

    保留路由名称:action,area,controller,hanler,page

    HTTP 动词模板:[HttpGet] [HttpPost] [HttpPut] [HttpDelete] [HttpHead] [HttpPatch]

    [Route("api/[controller]")]
    [ApiController]
    public class Test2Controller : ControllerBase
    {
        [HttpGet]   // GET /api/test2
        public IActionResult ListProducts()
        {
            return ControllerContext.MyDisplayRouteInfo();
        }
    
        [HttpGet("{id}")]   // GET /api/test2/xyz
        public IActionResult GetProduct(string id)
        {
           return ControllerContext.MyDisplayRouteInfo(id);
        }
    
        [HttpGet("int/{id:int}")] // GET /api/test2/int/3
        public IActionResult GetIntProduct(int id)
        {
            return ControllerContext.MyDisplayRouteInfo(id);
        }
    
        [HttpGet("int2/{id}")]  // GET /api/test2/int2/3
        public IActionResult GetInt2Product(int id)
        {
            return ControllerContext.MyDisplayRouteInfo(id);
        }
    }

    {id:int}限制了id参数必须可以转换成整数,否则不匹配路由。  

    2 配置(appsettings.json)

     3 运行发布

      将应用程序输出类型设置为类库时,报“无法运行项目,RunnCommand属性未定义”的错误,发布的文件无法成功启动(无论是独立版本还是框架依赖版本)。但若将项目设置成控制台应用程序,发布时会生成无效的.exe文件(测试结果显示可能还不是本程序对应的exe)

      

     CubeDemoNC程序发布可以成功运行,但vs中调试时,本地静态文件(css,js)无法加载报错

  • 相关阅读:
    JAVA程序员面试之《葵花宝典》
    61条Java面向对象设计的经验原则
    悟透JavaScript
    61条Java面向对象设计的经验原则
    悟透JavaScript
    SQL与Oracle数据库镜像对比
    21条SQL Server数据库开发经验
    VB开发——复制Excell表格
    国外Web2.0介绍
    关于RSS
  • 原文地址:https://www.cnblogs.com/mbaymax/p/13359152.html
Copyright © 2011-2022 走看看