可以在controller中使用ViewData从view中获取数据吗?

Zhi Lv - MSFT 32,736 信誉分 Microsoft 供应商
2024-01-29T08:21:49.7466667+00:00

可以在controller中使用ViewData从view中获取数据吗? 例如: View :

@{
    Layout = "_Layout";    
    ViewData["pid"] = "1";
}

在view 页面中提交表单后,如何在controller 中获取ViewData的值,就像这样:

public IActionResult do() {
    string pid=ViewData["pid"];//get "1"?
}

Note:此问题总结整理于:Can I get some data in controllers from view use viewdata?

ASP.NET Core
ASP.NET Core
.NET Framework 中一套用于生成 Web 应用程序和 XML Web 服务的技术。
32 个问题
0 个注释 无注释
{count} 票

接受的答案
  1. XuDong Peng-MSFT 10,841 信誉分 Microsoft 供应商
    2024-01-29T09:35:54.6866667+00:00

    你好, ViewData/ViewBag 主要用于将值从控制器传递到视图,仅适用于当前请求,将在重定向时被销毁。 TempData 可用于将值从控制器传递到视图,也可用于从控制器传递到控制器, 并且可用于当前和后续请求。它不会在重定向时被销毁。 所以可以将你的代码改为这样:

    View:
    
    @{
        Layout = "_Layout";
        TempData["pid"] = "1";
    }
    
    Controller:
    
    public async Task<IActionResult> Do()
    {
        string pid = TempData["pid"] as string;//get "1"
        //...
    }
    

    如果答案是正确的,请点击“接受答案”并点赞。 如果您对此答案还有其他疑问,请点击“评论”。 注意:如果您想接收相关电子邮件,请按照我们的文档中的步骤启用电子邮件通知 此线程的通知。

    0 个注释 无注释

0 个其他答案

排序依据: 非常有帮助

你的答案

问题作者可以将答案标记为“接受的答案”,这有助于用户了解已解决作者问题的答案。