将数据从Controller传递到View MVC-5

时间:2015-07-08 07:32:17

标签: asp.net asp.net-mvc asp.net-mvc-5

我目前正在研究MVC-5 ASP.NET并遵循本教程:https://www.youtube.com/watch?v=Fu9v2MIDlTA

我已成功创建了我的视图和控制器,因此我的HeLLO WORLD显示。现在我正在本教程的第2部分,其中我将数据从控制器传递给View。

以下是代码:

家庭控制器:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace WebApplication2.Controllers
{
    public class HomeController : Controller
    {
        //
        // GET: /Home/
        public ActionResult Index()
        {
            return View();
        }

        public ActionResult ShowHome()
        {
            ViewData["CurrentTime"] = DateTime.Now.ToString();
            return View("Home");
        }
    }
}

查看:

@{
    ViewBag.Title = "Home";
}
<html>

<head>
    <title>
        WELCOME TO MVC 5
    </title>
    <body>
        <div>
            This is my homepage! <br/>
            TIME: <%= ViewData["CurrentTime"]%>
        </div>
    </body>
</head>

</html>

问题是:为什么当我输入部件时: &lt; %%&gt ;,我的ide不读它?我的意思是,教程中的发言人正在使用我认为Visual Studio 2013 Ultimate。当他键入&lt;%&gt;%时,就会有智能感知。

当我输入

时,我使用Visual Studio 2013 Express for WEB
ViewData["CurrentTime"] = DateTime.Now.ToString();

IDE无法识别它并将其打印为字符串。 :(

1 个答案:

答案 0 :(得分:1)

Glenn你们对如何在aspx页面中注释的代码块以及它们在Razor视图引擎中的使用方式感到困惑。

您可以在视图顶部看到Razor正在运行:

@{
    ViewBag.Title = "Home";
}

那就是你怎么做的。花括号是可选的,如果你使用单个表达式,那么在你的情况下你可以写

<div>
    This is my homepage! <br/>
    TIME: @ViewData["CurrentTime"]
</div>

Scott Gu写了一篇关于两个系统之间差异的文章:http://weblogs.asp.net/scottgu/introducing-razor

根据经验:如果是.aspx文件,请使用<% %>。如果是.cshtml或.vbhtml,请使用@{ }