0

我已经开始使用 MVC,并且我已经建立了一个简单的项目,它有一个控制器,而不是从实体 FrameWork 返回一个值。我有一个用于索引页面的控制器,Visual Studio 在其模板中设置为默认值。

我希望这个值会被返回到网站的索引页面。

控制器代码

 MISEntities db = new MISEntities();

    public ActionResult Index()
    {
        ViewBag.Message = "Real Time Production";

        var scrap = from r in db.tbl_dppIT
                        select r.CastGood; 

        return View(scrap);
    }

如何使用 razor 访问 var 废料?我查看了 viewbag 方法和其他 razor 语法,但似乎无法找到我如何访问此项目。

4

3 回答 3

5

仅仅因为控制器变量是使用var关键字声明的,并不意味着它没有类型。相反,这告诉 C# 类型应该由其上下文推断(在这种情况下,是IEnumerable<T>任何类型tbl_dppIT.CastGood的 an)。

因此,其他三个答案部分正确,您需要定义通过 razor 关键字传递到视图的模型类型,@model如其他答案所述:

// In your view Razor:
@model IEnumerable</* type of CastGood */>

除了已经指定的三个答案之外,还有一个替代方法,那就是将scrap变量粘贴到ViewBag控制器中:

ViewBag.Scrap = scrap;

当您ScrapViewBag视图中访问 expando 属性时,它将是一个动态对象,因此您不会得到 IntelliSense 的帮助。但是,这是另一种方式,只是为了让你知道所有的可能性。

更新:

根据您在下面的评论,如果 CastGood 是一个允许为 null 且类型为 的数据库列int,那么您需要:

@model IEnumerable<int?>

HTH。

于 2013-08-28T13:09:33.650 回答
1

您需要使用@model关键字将变量 scrap 的类型声明为 View 内的模型。

// View.cshtml

@model IEnumerable<Namespace.ScrapType>

@foreach(var item in Model) {
    <p>@item.SomeProperty</p>
}

请参阅第 3 部分: MVC 音乐商店示例的视图和视图模型。

于 2013-08-28T13:01:56.737 回答
1

您需要强烈键入您的视图,它将作为模型实例使用。

@model IEumerable<MyType>

@foreach(var item in Model)
{
    @*do something with it *@
}
于 2013-08-28T13:02:30.630 回答