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

时间:2016-06-14 13:11:18

标签: c# asp.net asp.net-mvc asp.net-mvc-4

net MVC。

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

代码我用控制器编写。

public ActionResult Upload()
{

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

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

<h2>@ViewBag.Title.</h2>
<h3>@ViewBag.Message</h3>
<div>
    <%: ViewData["CurrentTime"] %>
</div>

但是当我运行这个程序时它会显示

<%: ViewData["CurrentTime"] %> 

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

3 个答案:

答案 0 :(得分:5)

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

<div>
    @DateTime.Now
</div>
在你看来

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

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

<div>
    @DateTime.Now.ToString("yyyy.MM.dd")
</div>

将呈现为

<div>
    2016.06.14
</div>

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

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

<h3>Make a quiz Question here</h3>

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

  

模型对象是实现它的应用程序的一部分   应用程序数据域的逻辑。通常,模型对象检索   并将模型状态存储在数据库中。例如,一个Product对象   可能会从数据库中检索信息,对其进行操作,然后   将更新的信息写回SQL Server中的Products表   数据库中。

您可以查看详细信息here或查看Microsoft教程的Models and Validation in ASP.NET MVC部分。

  1. 添加模型类:

    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; }
    }
    
  2. 将模型对象传递给视图:

    public ActionResult Index()
    {
        var model = GetModel();
        return View(model);
    }
    
  3. 通过定义模型类型添加strongly typed View

    @model Person
    
  4. 在您的视图中使用Model变量:

    @Model.City
    

答案 1 :(得分:1)

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

public ActionResult Upload()
{

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

}

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

访问它
@model System.DateTime

<h2>@ViewBag.Title.</h2>
<h3>@ViewBag.Message</h3>
<div>
    @Model.ToString()
</div>

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

答案 2 :(得分:1)

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

<h2>@ViewBag.Title.</h2>
<h3>@ViewBag.Message</h3>
<div>
    @ViewData["CurrentTime"]
</div>

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