如何将视图数据传递到Asp.net核心中的局部视图?

时间:2019-10-16 18:05:33

标签: c# asp.net-core-mvc

我要使用2.2版本的新.NET Core。我正在尝试使用以下代码将数据传递到部分视图:

 <partial name="_Emplyees" model="@Model.Employees" view-data="@new ViewDataDictionary(ViewData) { { "index", index }}"/>

,但是给出语法错误。有人可以指导如何传递数据并在局部视图中使用吗?预先感谢。

4 个答案:

答案 0 :(得分:1)

问题在于view-data属性中有双引号。您需要在属性值周围使用单引号。

<partial name="_Emplyees" model="Employees" view-data='@new ViewDataDictionary(ViewData) { { "index", index } }'/>

此外,@Model在这里是多余的,所以我将其删除。

答案 1 :(得分:0)

请参见Partial views in ASP.NET Core  和Partial Tag Helper in ASP.NET Core

<partial name="Shared/_ProductPartial.cshtml" for="Product">

<partial name="_ProductViewDataPartial" for="Product" view-data="ViewData">

@await Html.PartialAsync("_ProductPartial", product)

注意:

实例化部分视图时,它会收到一个副本。     父母的ViewData字典。

答案 2 :(得分:0)

您可以将ViewData传递到ASP.Net Core MVC中的部分视图,如下所示:

1。型号:

public class TestModel
{
    public string Employees { get; set; }
}

2.View(Create.cshtml):

@model TestModel
@{ 
    ViewData["index"] = true;
}
<partial name="_Emplyees" model="@Model" view-data="ViewData" />

3。局部视图:

<h3>Index: @ViewData["index"]</h3>
@model TestModel

@if ((bool)ViewData["index"])
{
    @Model.Employees
}
else
{
    <input asp-for="Employees" type="number" class="form-control" />
}

4.Controller:

public IActionResult Create()
{
    var testmodel = new TestModel() { Employees = "aaa" };
    return View(testmodel);
}

5。结果:

enter image description here

参考:

How to use view-data pass the data to partial view

https://docs.microsoft.com/en-us/aspnet/core/mvc/views/partial?view=aspnetcore-3.0#access-data-from-partial-views

答案 3 :(得分:0)

根据文档,实例化局部视图时,它将接收父级ViewData词典的副本。对部分视图中的数据所做的更新不会持久保存到父视图中。返回部分视图后,部分视图中的ViewData更改将丢失。

查看文档here

对我来说,我只是创建了一个局部视图,在另一个视图中访问了它,并直接在其中使用ViewData。

〜/ Views / Shared / _PageTop.cshtml

<a asp-controller="Home" asp-action="Index">Go Back</a>
<h1>@ViewData["Title"]</h1>

〜/ Views / Create.cshtml

@{
    ViewData["Title"] = "Create";
}
<partial name="_PageTop" />

因此,无需将任何内容传递给局部视图_PageTop,就可以使用@ViewData [“ Title”]直接访问父级的Title属性。