我已经开始使用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方法和其他剃刀语法,但似乎无法找到我如何访问此项目。
答案 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 *@
}