97

假设我有这个部分观点:

Your name is <strong>@firstName @lastName</strong>

可以通过仅限儿童的操作访问,例如:

[ChildActionOnly]
public ActionResult FullName(string firstName, string lastName)
{

}

我想在另一个视图中使用这个局部视图:

@Html.RenderPartial("FullName")

换句话说,我希望能够将 firstName 和 lastName 从视图传递到部分视图。我该怎么做?

4

7 回答 7

90

如果您想使用 ViewData,这是另一种方法:

@Html.Partial("~/PathToYourView.cshtml", null, new ViewDataDictionary { { "VariableName", "some value" } })

并检索传入的值:

@{
    string valuePassedIn = this.ViewData.ContainsKey("VariableName") ? this.ViewData["VariableName"].ToString() : string.Empty;
}
于 2015-08-19T02:17:38.680 回答
78

使用这个重载(RenderPartialExtensions.RenderPartial在 MSDN 上):

public static void RenderPartial(
    this HtmlHelper htmlHelper,
    string partialViewName,
    Object model
)

所以:

@{Html.RenderPartial(
    "FullName",
    new { firstName = model.FirstName, lastName = model.LastName});
}
于 2011-07-01T14:52:10.683 回答
25

您需要创建一个视图模型。这样的事情应该做......

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相应地访问。

于 2011-07-01T14:57:43.440 回答
14

确保在 Html.RenderPartial 周围添加 {},如下所示:

@{Html.RenderPartial("FullName", new { firstName = model.FirstName, lastName = model.LastName});}

不是

@Html.RenderPartial("FullName", new { firstName = model.FirstName, lastName = model.LastName});
于 2011-07-01T16:20:36.130 回答
6

以下在dotnet 1.0.1上为我工作:

./ourView.cshtml

@Html.Partial(
  "_ourPartial.cshtml",
  new ViewDataDictionary(this.Vi‌​ewData) {
    {
      "hi", "hello" 
    } 
  }
);

./_ourPartial.cshtml

<h1>@this.ViewData["hi"]</h1>
于 2017-01-21T01:55:56.420 回答
1

只是:

@Html.Partial("PartialName", Model);
于 2017-07-04T01:02:51.047 回答
0
@{
            Html.RenderPartial("_partialViewName", null, new ViewDataDictionary { { "Key", "Value" } });
        } 

在你想展示你的部分的地方,

 @{
    string valuePassedIn = this.ViewData.ContainsKey("Key") ? this.ViewData["Key"].ToString() : string.Empty;
}

在渲染的局部视图中,

使用 valuePassedIn --> @valuePassedIn

于 2021-08-31T10:11:21.063 回答