Sae*_*ati 87 model-view-controller asp.net-mvc controller asp.net-mvc-partialview asp.net-mvc-3
假设我有这个局部视图:
Your name is <strong>@firstName @lastName</strong>
Run Code Online (Sandbox Code Playgroud)
这可以通过仅限儿童的动作来访问:
[ChildActionOnly]
public ActionResult FullName(string firstName, string lastName)
{
}
Run Code Online (Sandbox Code Playgroud)
我想在另一个视图中使用这个局部视图:
@Html.RenderPartial("FullName")
Run Code Online (Sandbox Code Playgroud)
换句话说,我希望能够将firstName和lastName从视图传递到局部视图.我该怎么办?
Dav*_*ick 77
使用此重载(RenderPartialExtensions.RenderPartial
在MSDN上):
public static void RenderPartial(
this HtmlHelper htmlHelper,
string partialViewName,
Object model
)
Run Code Online (Sandbox Code Playgroud)
所以:
@{Html.RenderPartial(
"FullName",
new { firstName = model.FirstName, lastName = model.LastName});
}
Run Code Online (Sandbox Code Playgroud)
Gar*_*ish 77
如果您想使用ViewData,这是另一种方法:
@Html.Partial("~/PathToYourView.cshtml", null, new ViewDataDictionary { { "VariableName", "some value" } })
Run Code Online (Sandbox Code Playgroud)
并检索传入的值:
@{
string valuePassedIn = this.ViewData.ContainsKey("VariableName") ? this.ViewData["VariableName"].ToString() : string.Empty;
}
Run Code Online (Sandbox Code Playgroud)
sim*_*lds 24
您需要创建一个视图模型.这样的事应该做......
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;
}
}
Run Code Online (Sandbox Code Playgroud)
然后从你的动作结果传递模型
return View("FullName", new FullNameViewModel("John", "Doe"));
Run Code Online (Sandbox Code Playgroud)
并且您将能够访问@Model.FirstName
并@Model.LastName
相应地访问.
Bla*_*erX 13
确保在Html.RenderPartial周围添加{},如下所示:
@{Html.RenderPartial("FullName", new { firstName = model.FirstName, lastName = model.LastName});}
Run Code Online (Sandbox Code Playgroud)
不
@Html.RenderPartial("FullName", new { firstName = model.FirstName, lastName = model.LastName});
Run Code Online (Sandbox Code Playgroud)
以下在dotnet 1.0.1上为我工作:
./ourView.cshtml
@Html.Partial(
"_ourPartial.cshtml",
new ViewDataDictionary(this.Vi??ewData) {
{
"hi", "hello"
}
}
);
Run Code Online (Sandbox Code Playgroud)
./_ourPartial.cshtml
<h1>@this.ViewData["hi"]</h1>
Run Code Online (Sandbox Code Playgroud)