/ Controller / Action / 1 (controller / action / id의 기본 경로 가정)과 같은 URL에서 반환 된보기 내에서보기 내에서 ID에 액세스하려면 어떻게해야합니까?
요청을 처리 할 때 작업 수준에서 ViewData 사전에 추가 할 필요가 없습니다.
답변:
ViewData는 정확히이 작업을 수행하는 올바른 방법입니다.
다른 옵션은 ID가 포함 된 모델을 뷰에 전달하는 것입니다.
편집 : 당신이 무엇을하려고하는지 정확히 알지 못하면 더 구체적인 조언을 제공하기가 어렵습니다. ID는 필요하지만 다른 모델 데이터는 필요하지 않은 이유는 무엇입니까? 컨트롤러가 실제로 Id 필드를 뷰로 전송하고 있습니까? 시나리오가 무엇인지 상상하기 어렵습니다.
ID 값이 실제로 뷰에 전달되는 유일한 모델 정보 인 경우 ID 자체를 모델로 사용할 수 있습니다. 그러면 작업 메서드의 반환 값은 다음 View(id)
과 같을 것이며 ViewData를 사용할 필요가 없습니다.
ViewData["id"] = id;
딱 맞지 않습니다. 이 패턴을 꽤 많이 사용하고있는 것이 사실이라고 생각합니다. 한두 번은 아마 괜찮을 것입니다. 감사.
뷰 데이터에 추가하는 것은 올바른 일입니다. 추가하는 방법에 관해서는 항상 ActionFilter
경로 사전에서 가져 와서 뷰 데이터로 푸시 하는 사용자 지정 을 추가 할 수 있습니다 .
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>