[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.RenderPartialMSDN에서 ).

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.Vi‌​ewData) {
    {
      "hi", "hello"
    }
  }
);

./_ourPartial.cshtml

<h1>@this.ViewData["hi"]</h1>


답변

다만:

@Html.Partial("PartialName", Model);


답변