【问题标题】:How to pass data from controllers to view in ASP.net MVC? [duplicate]如何将数据从控制器传递到 ASP.net MVC 中查看? [复制]
【发布时间】:2016-06-14 13:11:17
【问题描述】:

网络 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"] %> 

相反,我需要 currenttime 的值。

【问题讨论】:

  • @ViewData["CurrentTime"] 然后抛弃所有这些并使用模型
  • 你使用的是razor引擎还是aspx引擎?
  • 在你看来就做@DateTime.Now,还是我在这里遗漏了什么?

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


【解决方案1】:

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

<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的模型部分:

模型对象是应用程序中实现 应用程序数据域的逻辑。通常,模型对象检索 并将模型状态存储在数据库中。例如,一个产品对象 可能会从数据库中检索信息,对其进行操作,然后 将更新的信息写回 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
    

【讨论】:

  • 这不仅仅是DateTime的问题......同样,我想传递变量。像 ViewData["myname"] = "Vishwa raj";
  • @VishwaRaj 我用简单的 MVC 模式示例更新了我的答案,并链接到 Microsoft 的 asp.net mvc 教程。
【解决方案2】:

您可以将值(也可以是复杂对象)作为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

【讨论】:

    【解决方案3】:

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

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

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

    【讨论】:

    • 谢谢大家。最后我解决了我的问题。
    猜你喜欢
    • 1970-01-01
    • 2014-05-11
    • 1970-01-01
    • 2019-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多