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

abh*_*h12 10 c# asp.net-core-mvc

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

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

但它给出了语法错误。有人可以指导如何传递数据并在局部视图中使用吗?提前致谢。

Chr*_*att 11

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

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

另外,@Model这里是多余的,所以我删除了它。


Ren*_*ena 6

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

1.型号:

public class TestModel
{
    public string Employees { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

2.查看(创建.cshtml):

@model TestModel
@{ 
    ViewData["index"] = true;
}
<partial name="_Emplyees" model="@Model" view-data="ViewData" />
Run Code Online (Sandbox Code Playgroud)

3.局部视图:

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

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

4.控制器:

public IActionResult Create()
{
    var testmodel = new TestModel() { Employees = "aaa" };
    return View(testmodel);
}
Run Code Online (Sandbox Code Playgroud)

5.结果:

在此处输入图片说明

参考:

如何使用视图数据将数据传递给局部视图

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