我想从一开始就养成好习惯,所以我有一个问题和一个问题:
我一直在做以下一直在工作的事情,然后我读了这篇文章
我一直在做的这个例子:
控制器
public ActionResult OneDollar130(Int32 number)
{
MyEDM db = new MyEDM();
MyDBModel model = db.MyTable.Where(t => t.Current == 1 && t.No == number).First();
return View(model);
}
看法
@model MyProject.MyDBModel
<table>
<tr>
@if (Model.fldNo1 == "")
{
<td class="numberTD">
@Html.ActionLink("1", "Number1", "Number", new { model = Model, number = 1 }, null)
</td>
}
else
{
<td class="numberTD2">
@Html.ActionLink("1", "Number2", "Number", new { model = Model, number = 1 })
</td>
}
</tr>
</table>
我正在使用我的 EDM 中的模型并将其传递给视图。
我在上面的帖子中读到我不应该将我的数据库模型传递给视图,因为这是不好的做法。这让我有些担心,因为我想做得对。
因此,基于上面的帖子,我将代码更改为进行实验并遇到了障碍:
控制器
public ActionResult OneDollar112(Int32 TableNo)
{
return View(new getOneDollar112Game(TableNo));
}
模型
public class getMyModel
{
MyEDM db = new MyEDM();
public MyDBModel MyModel { get; set; }
public getMyModel() { }
public getMyModel(Int32 number)
{
MyModel = db.MyTable
.Where(t => t.Current == 1 && t.No == numbner).First();
}
}
看法
@model MyProject.Models.getMyModel
<table>
<tr>
@if (Model.fldNo1 == "")
{
<td class="numberTD">
@Html.ActionLink("1", "Number1", "Number", new { model = Model, number = 1 }, null)
</td>
}
else
{
<td class="numberTD2">
@Html.ActionLink("1", "Number2", "Number", new { model = Model, number = 1 })
</td>
}
</tr>
</table>
好的,所以我的两个问题是:
哪个是最佳实践……我之前所做的是否违反了不将数据库模型传递给视图的规则?
如果第二种方法是正确的(我假设),为什么我不断收到 fldNo1 不存在的错误?
例如:CS1061:“MyProject.Models.getMyModel”不包含“fldNo1”的定义,并且找不到接受“MyProject.Models.getMyModel”类型的第一个参数的扩展方法“fldNo1”(您是否缺少 using 指令还是汇编参考?)