C# 如何在Asp.net core中将视图数据传递给部分视图?
我正在使用2.2版本更新.NET内核。我正在尝试使用以下代码将数据传递到部分视图:C# 如何在Asp.net core中将视图数据传递给部分视图?,c#,asp.net-core-mvc,C#,Asp.net Core Mvc,我正在使用2.2版本更新.NET内核。我正在尝试使用以下代码将数据传递到部分视图: <partial name="_Emplyees" model="@Model.Employees" view-data="@new ViewDataDictionary(ViewData) { { "index", index }}"/> 但是它给出的语法错误。有人能指导如何在局部视图中传递数据和使用吗?提前感谢。问题在于查看数据属性中有双引号。您需要在属性值周围使用单引号 <part
<partial name="_Emplyees" model="@Model.Employees" view-data="@new ViewDataDictionary(ViewData) { { "index", index }}"/>
但是它给出的语法错误。有人能指导如何在局部视图中传递数据和使用吗?提前感谢。问题在于
查看数据属性中有双引号。您需要在属性值周围使用单引号
<partial name="_Emplyees" model="Employees" view-data='@new ViewDataDictionary(ViewData) { { "index", index } }'/>
另外,@Model
在这里是多余的,所以我删除了它。请参见
和
@等待Html.partialSync(“\u ProductPartial”,product)
注:
实例化局部视图时,它将收到
父级的ViewData字典。您可以在ASP.Net核心MVC中将ViewData传递给部分视图,如下所示:
1.型号:
public class TestModel
{
public string Employees { get; set; }
}
2.视图(Create.cshtml):
5.结果:
参考:
根据文档,当实例化局部视图时,它会收到父视图的ViewData字典的副本。对局部视图中的数据所做的更新不会持久化到父视图。局部视图返回时,局部视图中的ViewData更改将丢失
签出文档
对我来说,我只是创建了一个局部视图,在另一个视图中访问它,并直接在其中使用ViewData
~/Views/Shared/\u PageTop.cshtml
<a asp-controller="Home" asp-action="Index">Go Back</a>
<h1>@ViewData["Title"]</h1>
返回
@ViewData[“标题”]
~/Views/Create.cshtml
@{
ViewData["Title"] = "Create";
}
<partial name="_PageTop" />
@{
ViewData[“标题”]=“创建”;
}
因此,无需将任何内容传递给部分视图_PageTop,我就可以使用@ViewData[“Title”]直接访问父视图的Title属性。在Core 2.1至至少3.1中,有3种方法可以将视图数据传递给部分视图。使用部分标记辅助对象的for、model或view数据属性。文件载于
<h3>Index: @ViewData["index"]</h3>
@model TestModel
@if ((bool)ViewData["index"])
{
@Model.Employees
}
else
{
<input asp-for="Employees" type="number" class="form-control" />
}
public IActionResult Create()
{
var testmodel = new TestModel() { Employees = "aaa" };
return View(testmodel);
}
<a asp-controller="Home" asp-action="Index">Go Back</a>
<h1>@ViewData["Title"]</h1>
@{
ViewData["Title"] = "Create";
}
<partial name="_PageTop" />