Program Club

URL (ASP.NET MVC)에서보기 내 현재 경로 ID를 얻는 방법

proclub 2020. 10. 15. 22:00
반응형

URL (ASP.NET MVC)에서보기 내 현재 경로 ID를 얻는 방법


/ Controller / Action / 1 (controller / action / id의 기본 경로 가정)과 같은 URL에서 반환 된보기 내에서보기 내에서 ID에 액세스하려면 어떻게해야합니까?

요청을 처리 할 때 작업 수준에서 ViewData 사전에 추가 할 필요가 없습니다.


나는 이것이 당신이 찾고있는 것이라고 생각합니다.

<%=Url.RequestContext.RouteData.Values["id"]%>

ViewData는 정확히이 작업을 수행하는 올바른 방법입니다.

다른 옵션은 ID가 포함 된 모델을 뷰에 전달하는 것입니다.

편집 : 당신이 무엇을하려고하는지 정확히 알지 못하면 더 구체적인 조언을 제공하기가 어렵습니다. ID는 필요하지만 다른 모델 데이터는 필요하지 않은 이유는 무엇입니까? 컨트롤러가 실제로 Id 필드를 뷰로 만 보내고 있습니까? 시나리오가 무엇인지 상상하기 어렵습니다.

ID 값이 실제로 뷰에 전달되는 유일한 모델 정보 인 경우 ID 자체를 모델로 사용할 수 있습니다. 그러면 작업 메서드의 반환 값은 다음 View(id)같을 것이며 ViewData를 사용할 필요가 없습니다.


뷰 데이터에 추가하는 것은 올바른 일입니다. 추가하는 방법에 관해서는 항상 ActionFilter경로 사전에서 가져 와서 뷰 데이터로 푸시 하는 사용자 지정 추가 할 수 있습니다 .


URL 작업 Url.RequestContext.RouteData.Values ​​[ "id"]에서 직접 사용할 수 있다고 생각합니다.


우리는 전달할 수 idRoute Data또는QueryString 그렇게하기 위해, 둘 다 지원 내가이 방법을 권장합니다 :

var routeValues=Url.RequestContext.RouteData.Values;
var paramName = "id";
var id = routeValues.ContainsKey(paramName)?
         routeValues[paramName]:
         Request.QueryString[paramName];

단지 2 센트이지만 저는 항상 뷰 모델을 사용하여 데이터를 뷰에 전달합니다. int이드와 같은 것을 필요로하는 것처럼 간단하더라도 .

이렇게하면 MVC가 모든 작업을 수행하므로이 값에 액세스하는 것이 간단 해집니다.

일반적으로 뷰 모델의 이름 을 다음과 같이 지정합니다.

{Controller}{ViewName}ViewModel

이를 통해 규모에 맞게 정리할 수 있습니다.

예 :

// ~/ViewModels/HomeEditViewModel.cs
public class HomeEditViewModel
{
  public int Id { get; set; }
}

// ~/Controllers/HomeController.cs
public IActionResult Edit(int id)
{
  return View(new HomeEditViewModel() { Id = id });
}

// ~/Views/Home/Edit.cshtml
@model HomeEditViewModel

<h1>Id: @Model.Id</h1>

Razor의 간단한 답변 :

@Url.RequestContext.RouteData.Values["id"]

나는 방금 사용 <%= model.id %>했고 작동합니다

참고 URL : https://stackoverflow.com/questions/979532/how-to-get-the-current-route-id-within-a-view-from-the-url-asp-net-mvc

반응형