关于c#:如何将数据从控制器传递到ASP.net MVC中的视图?

How to pass data from controllers to view in ASP.net MVC?

本问题已经有最佳答案,请猛点这里访问。

净MVC。

对于我认识的每个人,我需要做的事情非常简单。
我需要在控制器之间传递数据以在ASP.net MVC中查看。

代码我用控制器编写。

1
2
3
4
5
6
7
public ActionResult Upload()
{

    ViewBag.Message ="Make a quiz Question here";
    ViewData["CurrentTime"] = DateTime.Now.ToString();
    return View();
}

这是我在视图中添加的代码。

1
2
3
4
@ViewBag.Title.
@ViewBag.Message

    <%: ViewData["CurrentTime"] %>

但是当我运行这个程序时,它显示出来

1
<%: ViewData["CurrentTime"] %>

相反,我需要当前时间的价值。


您无需从控制器传递当前时间等数据。你可以写

1
    @DateTime.Now

在你看来。在服务器中呈现的视图然后将呈现为@DateTime.Now的值。

此外,您可以使用ToString方法格式化视图:

1
    @DateTime.Now.ToString("yyyy.MM.dd")

将呈现给

1
    2016.06.14

请注意,代码将显示可能与客户端时区不同的服务器时间。要显示当前时间,您应该使用JS代码。

它不是静态数据,但它也不是真正的模型或业务数据,它可以在没有输入参数的视图中计算。消息也不是模型而不是依赖于控制器的数据,它可以在视图中硬编码或从模型数据中检索:

1
Make a quiz Question here

如果您需要实际从控制器传递数据并且其数据取决于内部状态或输入控制器参数或具有"业务数据"的其他属性,则应使用MVC模式的模型部分:

Model objects are the parts of the application that implement the
logic for the application's data domain. Often, model objects retrieve
and store model state in a database. For example, a Product object
might retrieve information from a database, operate on it, and then
write updated information back to a Products table in a SQL Server
database.

您可以在此处查看详细信息,或查看Microsoft教程的ASP.NET MVC部分中的模型和验证。

  • 添加模型类:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public class Person
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public int Age { get; set; }
        public string Street { get; set; }
        public string City { get; set; }
        public string State { get; set; }
        public int Zipcode { get; set; }
    }
  • 将模型对象传递给视图:

    1
    2
    3
    4
    5
    public ActionResult Index()
    {
        var model = GetModel();
        return View(model);
    }
  • 通过定义模型类型添加强类型视图:

    1
    @model Person
  • 在视图中使用model变量:

    1
    @Model.City

  • 你正在混合使用Razor和ASPX语法。将您的观点更改为:

    1
    2
    3
    4
    @ViewBag.Title.
    @ViewBag.Message

        @ViewData["CurrentTime"]

    我建议阅读ViewBag和ViewData,以及Razor模型绑定。


    您可以将值(也是复杂对象)传递为model,即DateTime对象

    1
    2
    3
    4
    5
    6
    7
    public ActionResult Upload()
    {

        ViewBag.Message ="Make a quiz Question here";
        return View(DateTime.Now);

    }

    在第一行中,您必须定义模型具有的数据类型。您可以通过Model.something访问它:

    1
    2
    3
    4
    5
    6
    @model System.DateTime

    @ViewBag.Title.
    @ViewBag.Message

        @Model.ToString()

    这里有一个可执行的例子:https://dotnetfiddle.net/mIgpJL