首页 > 解决方案 > 如何将数据从控制器传递到C#中的视图

问题描述

我想计算该方法运行所需的时间,因此我试图将开始时间、结束时间和经过的时间值从控制器传递给视图。我怎样才能做到这一点?

这是我已经用来从 cs 文件传递​​值的控制器,因此 ViewBag.Message 就是为此,但我想使用另一个控制器将更多值传递给视图。

public ActionResult Test()
        {
            var startTime = DateTime.Now;
            ViewBag.Message = _importFactory.importScanSourceProductData(CurrentTenantId, "", null, CurrentUserId);
            var endTime = DateTime.Now;
            var elapsedTime = endTime - startTime;
            ViewBag.Message = elapsedTime;
            return View();
        }

看法

@model dynamic
@{
    Layout = null;
    var data = ViewBag.Message;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Test</title>

</head>
<body>
    <div>
        <h1>Import Scan Source Product Data</h1>
        <p>@data</p>
    </div>
</body>
</html>

标签: c#asp.net-mvcmodel-view-controller

解决方案


我建议如果你想从控制器传递多个值来查看你应该创建一个新的视图模型类,其中包含定义要传递的属性列表。

然后继续在您的控制器中创建该类的实例,并在 return View(); 中传递该实例;

例子 :

    public ActionResult Test()
            {
                var viewModel = new viewModel();
                var startTime = DateTime.Now;
                viewModel.Message = _importFactory.importScanSourceProductData(CurrentTenantId, "", null, CurrentUserId);
                var endTime = DateTime.Now;
                viewModel.EndTime =  endTime;
                var elapsedTime = endTime - startTime;
                viewModel.ElapsedTime =  elapsedTime;
                return View(viewModel);
            }

现在在 .CSHTML 中使用它 - @viewModel.StartTime 等


推荐阅读