0

我正在工作/调整 asp.net mvc 4 的默认安装 .. 添加了一些视图 ..

当我尝试将模型传递给我的视图时,该模型(名称和命名空间)被写入页面。

@Model Blah.Web.UI.Models.DirectoryModel
@{
    ViewBag.Title = "Directory";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

当我查看我的页面时,我看到了

Blah.Web.UI.Models.DirectoryModel Blah.Web.UI.Models.DirectoryModel

在页面顶部写了两次..

我的控制器只是初始化模型并将其传递到视图中..

我也注意到这发生在名为 form _layout 的@RenderBody() 中。所以我假设它是在我认为的某个地方完成的。

即使我在我的视图中注释掉所有代码(接受上面的声明),我仍然会看到这个字符串被写出来。

4

1 回答 1

5

改变

@Model Blah.Web.UI.Models.DirectoryModel

@model Blah.Web.UI.Models.DirectoryModel

@model带有小写字母的指令m告诉 razor 模型的类型是什么。

另一方面@Model,大写M只调用ToString视图的Model属性并将字符串写入响应中。

这就是为什么

 @Model Blah.Web.UI.Models.DirectoryModel

输出:Blah.Web.UI.Models.DirectoryModel Blah.Web.UI.Models.DirectoryModel

首先,它将 theToString的 theModel和该行的其余部分写Blah.Web.UI.Models.DirectoryModel为纯文本。

于 2012-11-10T21:03:46.763 回答