ASP.NET Core 2.0 로 케 이 션 엔진 주소 생 성(번역)

6197 단어 ASP.NETCore2.0
문제.
어떻게 ASP.NET Core 2.0 에서 엔진 으로 인터넷 주 소 를 생 성 합 니까?
답안
새 빈 항목 을 만 들 고 Startup.cs 파일 을 수정 하 며 MVC 서비스 와 미들웨어 를 추가 합 니 다.

public void ConfigureServices(IServiceCollection services)

{

 services.AddMvc();

}

 

public void Configure(IApplicationBuilder app, IHostingEnvironment env)

{

 if (env.IsDevelopment())

 {

  app.UseDeveloperExceptionPage();

 }

 

 app.UseMvc(routes =>

 {

  routes.MapRoute(

   name: "goto_one",

   template: "one",

   defaults: new { controller = "Home", action = "PageOne" });

 

  routes.MapRoute(

   name: "goto_two",

   template: "two/{id?}",

   defaults: new { controller = "Home", action = "PageTwo" });

 

  routes.MapRoute(

   name: "default",

   template: "{controller=Home}/{action=Index}/{id?}");

 });

} 

MobileController 컨트롤 러 클래스 추가:

 public class MobileController : Controller

{

 public IActionResult Index()

 {

  var url = Url.Action("Index"); // /mobile

  return Content($"Mobile/Index (Url: {url})");

 }

 

 public IActionResult PageOne()

 {

  var url = Url.Action("PageOne"); // /mobile/PageOne

  return Content($"Mobile/One (Url: {url})");

 }

 

 [HttpGet]

 public IActionResult PageTwo()

 {

  var url = Url.Action("PageTwo"); // /mobile/PageTwo OR /mobile/PageTwo/1?

  return Content($"(GET) Mobile/Two (Url: {url})");

 }

 

 [HttpPost]

 public IActionResult PageTwo(int id)

 {

  var url = Url.Action("PageTwo"); // /mobile/PageTwo/1

  return Content($"(POST) Mobile/Two: {id} (Url: {url})");

 }

 

 public IActionResult PageThree()

 {

  var url = Url.RouteUrl("goto_two", new { id = 5 }); // /two/5

  return Content($"Mobile/Three (Url: {url})");

 }

 

 public IActionResult PageFour()

 {

  var url = Url.RouteUrl("goto_two", new { q = 5 }); // /two?q=5

  return Content($"Mobile/Four (Url: {url})");

 }

 

 public IActionResult PageFive()

 {

  return RedirectToAction("PageSix");

 }

 

 public IActionResult PageSix()

 {

  return Content("Mobile/Six (Mobile/Five will also come here)");

 }

} 

토론 하 다.
우 리 는 프로그램 에서 웹 주 소 를 하 드 코딩 하지 않 고 MVC 의 경로 체 제 를 사용 하여 웹 주 소 를 만 들 수 있다.MVC 는 맵 이 제공 하 는 템 플 릿 을 설정 하 는 데 서 온 모든 정 보 를 가지 고 있 습 니 다.
MVC 는 인터넷 주 소 를 만 드 는 기능 을 제공 하기 위해 IUrlHelper 인 터 페 이 스 를 제공 합 니 다.이것 은 컨트롤 러 기본 클래스,보기,시도 구성 요소 에서 Url 속성 을 공개 함으로써 이 루어 집 니 다.
IUrlHelper 인 터 페 이 스 는 웹 주 소 를 만 드 는 두 가지 중요 한 방법 을 제공 합 니 다.
1.Action:컨트롤 러,방법 과 경로 매개 변수 값 을 제공 하여 웹 주 소 를 생 성 합 니 다.
2.RouteUrl:루트 맵 이름과 루트 파 라미 터 를 제공 하여 주 소 를 생 성 합 니 다.
상기 방법 을 호출 할 때 컨트롤 러 와 경로 파 라 메 터 를 제공 하지 않 으 면 MVC 는 현재 요청 이나 방법 파라미터 에서 가 져 옵 니 다(즉,현재 컨 텍스트 의 환경 변수 에서 가 져 옵 니 다).다음 방법 은 Mobile Controller 컨트롤 러 에 존재 합 니 다.

public IActionResult PageTwo(int id)

{

 var url = Url.Action("PageTwo"); // /mobile/PageTwo/1

 return Content($"(POST) Mobile/Two: {id} (Url: {url})");

}
루트 매개 변 수 는 익명 의 대상 으로 제공 할 수 있 습 니 다.

 public IActionResult PageThree()

{

 var url = Url.RouteUrl("goto_two", new { id = 5 }); // /two/5

 return Content($"Mobile/Three (Url: {url})");

} 


MVC 가 이 값 을 주소 표시 에 표시 할 수 없다 면 이 매개 변 수 는 사이트 의 검색 문자열 로 연 결 됩 니 다. 

public IActionResult PageFour()

{

 var url = Url.RouteUrl("goto_two", new { id=5, key1 = "value1" }); // /two/5?key1=value1

 return Content($"Mobile/Four (Url: {url})");

} 

controlBase 클래스 에 편리 한 방법 이 있 습 니 다.RedirectToAction 은 사용자 의 요청 을 컨트롤 러 방법 으로 바 꾸 는 데 사 용 됩 니 다.이 과정 은 클 라 이언 트 에서 이 루어 집 니 다.

public IActionResult PageFive()

{

 return RedirectToAction("PageSix");

}

 

public IActionResult PageSix()

{

 return Content("Mobile/Six (Mobile/Five will also come here)");

} 
  
  
IUrlHeper 를 의존 항목 으로 필요 한 클래스 에 주입 하기 위해 서 는 먼저 Configure Services 에 해당 하 는 서 비 스 를 설정 해 야 합 니 다. 

public void ConfigureServices(IServiceCollection services)

{

 services.AddSingleton<IActionContextAccessor, ActionContextAccessor>();

 services.AddScoped<IUrlHelper>(factory =>

 {

  var actionContext = factory.GetService<IActionContextAccessor>().ActionContext;

  return new UrlHelper(actionContext);

 });

 

 services.AddMvc();

}   

주:대부분의 경우 IUrlHelper 를 주입 을 통 해 사용 할 필요 가 없습니다.컨트롤 러 때문에 보기에 서 Url 속성 이 공개 되 어 있 습 니 다. 
소스 코드 다운로드
원문
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기