在View MVC中访问Controller变量

时间:2013-08-28 12:59:56

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

我已经开始使用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);
    }

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

3 个答案:

答案 0 :(得分:4)

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

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

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

已经指定了三个答案的替代方法,即将scrap变量粘贴到控制器中的ViewBag

ViewBag.Scrap = scrap;

当您从视图中的Scrap访问expando属性ViewBag时,它将是一个动态对象,因此您无法获得IntelliSense的帮助。但是,这是另一种方式,只是为了让你了解所有可能性。

<强>更新

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

@model IEnumerable<int?>

HTH。

答案 1 :(得分:1)

您需要使用@model关键字将变量剪贴簿的类型声明为视图中的模型。

// View.cshtml

@model IEnumerable<Namespace.ScrapType>

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

请参阅MVC音乐商店示例的Part 3: Views and ViewModels

答案 2 :(得分:1)

您需要强烈输入您的视图,它将作为Model实例使用。

@model IEumerable<MyType>

@foreach(var item in Model)
{
    @*do something with it *@
}