[asp.net-mvc] ASP.NET MVC의 부분보기에 매개 변수를 전달하는 방법은 무엇입니까?
이 부분보기가 있다고 가정합니다.
Your name is <strong>@firstName @lastName</strong>
다음과 같은 아동 전용 작업을 통해 액세스 할 수 있습니다.
[ChildActionOnly]
public ActionResult FullName(string firstName, string lastName)
{
}
이 부분보기를 다른보기 내에서 사용하고 싶습니다.
@Html.RenderPartial("FullName")
즉, 뷰에서 부분 뷰로 firstName과 lastName을 전달할 수 있기를 원합니다. 어떻게해야합니까?
답변
이 오버로드를 사용하십시오 ( RenderPartialExtensions.RenderPartial
MSDN에서 ).
public static void RenderPartial(
this HtmlHelper htmlHelper,
string partialViewName,
Object model
)
그래서:
@{Html.RenderPartial(
"FullName",
new { firstName = model.FirstName, lastName = model.LastName});
}
답변
ViewData를 사용하려는 경우 다른 방법이 있습니다.
@Html.Partial("~/PathToYourView.cshtml", null, new ViewDataDictionary { { "VariableName", "some value" } })
그리고 전달 된 값을 검색하려면 :
@{
string valuePassedIn = this.ViewData.ContainsKey("VariableName") ? this.ViewData["VariableName"].ToString() : string.Empty;
}
답변
뷰 모델을 만들어야합니다. 이런 식으로해야합니다 …
public class FullNameViewModel
{
public string FirstName { get; set; }
public string LastName { get; set; }
public FullNameViewModel() { }
public FullNameViewModel(string firstName, string lastName)
{
this.FirstName = firstName;
this.LastName = lastName;
}
}
그런 다음 행동 결과에서 모델을 전달하십시오.
return View("FullName", new FullNameViewModel("John", "Doe"));
당신은에 액세스 할 수 있습니다 @Model.FirstName
및 @Model.LastName
따라서.
답변
다음과 같이 Html.RenderPartial 주위에 {}를 추가해야합니다.
@{Html.RenderPartial("FullName", new { firstName = model.FirstName, lastName = model.LastName});}
아니
@Html.RenderPartial("FullName", new { firstName = model.FirstName, lastName = model.LastName});
답변
다음은 dotnet 1.0.1 에서 나를 위해 일하고 있습니다 .
./ourView.cshtml
@Html.Partial(
"_ourPartial.cshtml",
new ViewDataDictionary(this.ViewData) {
{
"hi", "hello"
}
}
);
./_ourPartial.cshtml
<h1>@this.ViewData["hi"]</h1>
답변
다만:
@Html.Partial("PartialName", Model);