我是asp.net MVC的新手,我有以下控制器,Model&查看和我使用数据库第一种方法与EF和使用Storedprocedure返回结果。
创建EF6后,我可以在edmx页面下看到我的模型(不在模型下)
我附上了示例代码
控制器
public class TestController : Controller
{
//
// GET: /Test/
public ActionResult Index()
{
RBACv3Entities test = new RBACv3Entities();
var result = test.testing();
return View(result.ToList());
}
}
模型
public partial class test
{
public int id { get; set; }
public string name { get; set; }
}
查看
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
<table align="center" border="1" cellpadding="4" cellspacing="4">
<tr>
<th style="background-color: Yellow;color: blue">Customer ID</th>
<th style="background-color: Yellow;color: blue">Customer Name</th>
<th style="background-color: Yellow;color: blue">City</th>
<th style="background-color: Yellow;color: blue">Country</th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>@item.id</td>
<td>@item.name</td>
<td>NULL</td>
<td>NULL</td>
</tr>
}
</table>
如果我在Razor视图中使用@model在我的页面顶部,我收到错误并且不允许在顶部使用@ model.test但我可以在不使用顶部的情况下访问所有结果。什么时候应该在Razor顶部使用@model。
错误
CS0119: 'Mypro.test' is a 'type', which is not valid in the given context
查看我与@model一起使用
@model Mypro.test
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
<table align="center" border="1" cellpadding="4" cellspacing="4">
<tr>
<th style="background-color: Yellow;color: blue">Customer ID</th>
<th style="background-color: Yellow;color: blue">Customer Name</th>
<th style="background-color: Yellow;color: blue">City</th>
<th style="background-color: Yellow;color: blue">Country</th>
</tr>
@foreach (var item in Mypro.test)
{
<tr>
<td>@item.name</td>
</tr>
}
</table>
答案 0 :(得分:0)
我认为你的模型应该是@model IEnumerable<Mypro.test>
,因为你想迭代它。
然后你必须纠正你的foreach循环:
@foreach (var item in Model)
{
<tr>
<td>@item.name</td>
</tr>
}
要回答您的问题,何时应使用@model
的模型声明:
您的视图将被编译,如果省略模型声明,编译器将仅使用dynamic
作为类型。这意味着在编译期间无法检查.Name
之类的属性是否确实存在。如果您在尝试调用该特定视图时没有收到错误。
通过提供有关模型结构的信息,声明模型可帮助您和编译器在编译时发现错误。当编译器告诉你,你做错了什么时,你会在你的代码下面收到那些漂亮的潦草红线。