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"]에서 직접 사용할 수 있다고 생각합니다.
우리는 전달할 수 id로 Route 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 %>했고 작동합니다
'Program Club' 카테고리의 다른 글
| 키 값 관찰을 수행하고 UIView의 프레임에서 KVO 콜백을 받으려면 어떻게해야합니까? (0) | 2020.10.16 |
|---|---|
| Windows PowerShell : 명령 프롬프트 변경 (0) | 2020.10.16 |
| Devise의 token_authenticatable은 안전한가요? (0) | 2020.10.15 |
| JTable은 열 머리글을 표시하지 않습니다. (0) | 2020.10.15 |
| 한 ArrayList의 내용을 다른 ArrayList에 어떻게 복사합니까? (0) | 2020.10.15 |