【问题标题】:Is there any easy way to to pass complex objects from one PageModel file to another in asp.net core razor pages (mvvm, not mvc)?是否有任何简单的方法可以将复杂对象从一个 PageModel 文件传递​​到 asp.net 核心剃须刀页面(mvvm,而不是 mvc)中的另一个?
【发布时间】:2020-04-13 04:52:37
【问题描述】:

我熟悉asp.net mvc开发。在该框架中,传递复杂对象(例如对象列表)就像在一个控制器中创建公共静态列表一样简单:

public static List<T_Material> lstProducts = new List<T_Material>()
        {
            new T_Material {T_MaterialID = 1, Name = "Product1", Description="Description1", Price=20, MonthsOfAccess=20},
            new T_Material {T_MaterialID = 2, Name = "Product2", Description="Description2", Price=20, MonthsOfAccess=20}
        }

并使用以下代码在另一个控制器中引用:ControllerName.lstProducts

我正在 asp.net 核心剃须刀页面中构建一个应用程序(使用带有 PageModel 代码而不是 MVC 的文件的剃须刀页面)并从一个 PageModel 文件传递​​一个复杂的对象一点也不简单。我觉得这个问题的答案应该很明显,但我还在摸不着头脑。

【问题讨论】:

    标签: c# asp.net mvvm razor-pages


    【解决方案1】:

    如果您希望将对象从控制器传递到视图,请使用 viewbag。

    ViewBag.ListProducts = lstProducts;

    请注意,此 Viewbag 只能使用您的 PageMdel 在强类型视图中访问。

    如果您希望将此对象从第一个请求传递到第二个请求,请使用 tempdata。

    TempData[“ListProducts”]= lstProducts;

    【讨论】:

    • 我尝试将我的对象列表序列化为 JSON,将其传递给 TempData["ListProducts"] 并将其反序列化为下一个 PageModel 的 OnGet() 但收到错误 - 无法从“对象”转换到“字符串”。有什么想法吗??
    • 请查看这里:dotnettutorials.net/lesson/asp-dot-net-mvc-tempdata 了解如何使用 TempData。如果您在从 TempData 访问值时仍然遇到问题,请提出一个新问题。
    猜你喜欢
    • 2021-04-08
    • 2021-04-05
    • 2021-12-29
    • 1970-01-01
    • 2021-11-28
    • 2021-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多