Asp.net core mvc Asp.net核心MVC ModelMetadata.AdditionalValues添加函数

Asp.net core mvc Asp.net核心MVC ModelMetadata.AdditionalValues添加函数,asp.net-core-mvc,asp.net-core-3.1,Asp.net Core Mvc,Asp.net Core 3.1,我正在将MVC5升级到Asp.Net Core 3 MVC,刚刚发现ModelMetadata.AdditionalValues已更改为IReadOnlyDictionary。我们以前在附加值中存储过信息。现在的替代方案是什么 提前谢谢。 威尔逊 现在的替代方案是什么 您可以使用ViewData和ViewBag将数据传递给ASP.NET Core中的视图 查看数据 是控制器基类的属性,它返回一个ViewDataDictionary对象。 ViewDataDictionary是一个dictiona

我正在将MVC5升级到Asp.Net Core 3 MVC,刚刚发现ModelMetadata.AdditionalValues已更改为IReadOnlyDictionary。我们以前在附加值中存储过信息。现在的替代方案是什么

提前谢谢。 威尔逊

现在的替代方案是什么

您可以使用
ViewData
ViewBag
将数据传递给ASP.NET Core中的视图

查看数据 是控制器基类的属性,它返回一个
ViewDataDictionary
对象。
ViewDataDictionary
是一个dictionary对象,它允许我们存储键值对。密钥必须是不区分大小写的字符串。要将数据传递给视图,可以使用键将值分配给字典。您可以根据需要在
ViewData
中存储任意数量的项目

存储在
ViewData
对象中的数据仅在当前请求期间存在。一旦视图生成并发送到客户端,
Viewdata
对象就会被清除

以下是在操作中使用
ViewData
设置标题值的示例:

1。控制器中的代码

public IActionResult Index()
{
    ViewData["Title"] = "Hello World!";
    return View();
}
public IActionResult SomeAction()
{
    ViewBag.Greeting = "Hello";

    return View();
}
2。视图中的代码

@ViewData["Greeting"]
@ViewBag.Greeting World!

查看包 在Razor页面中不可用
ViewBag
是一个动态ViewData对象,提供对存储在
ViewData
中的对象的动态访问
ViewBag
可以更方便地使用,因为它不需要铸造。以下示例显示了如何使用
ViewBag
,其结果与使用上述
ViewData
相同:

1。控制器中的代码

public IActionResult Index()
{
    ViewData["Title"] = "Hello World!";
    return View();
}
public IActionResult SomeAction()
{
    ViewBag.Greeting = "Hello";

    return View();
}
2。视图中的代码

@ViewData["Greeting"]
@ViewBag.Greeting World!



在这里,您可以在中找到更多信息,如下所示。

  • ViewData属性-另一种使用
    ViewDataDictionary
    的方法是
    ViewDataAttribute
  • 同时使用ViewData和ViewBag
  • ViewData和ViewBag之间的差异摘要
  • 使用ViewData或ViewBag时
  • 强类型数据(ViewModel

谢谢你,迈克尔。但是我们在HtmlHelper中使用ModelMetadata.AdditionalData,它类似于自定义属性。也许您可以找到ModelMetadata属性不再存在的原因。谢谢。IDisplayMetadataProvider是现在的选项之一。