最初から良い習慣を身につけたいので、この質問と問題があります。
私は働いている次のことをしてきました、そして私はこの投稿を読みました
私がやっていることのこの例:
コントローラ
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>
さて、私の2つの質問は次のとおりです。
ベスト プラクティスはどれですか ... DB モデルをビューに渡さないというルールを破る前に行っていたことはありますか?
2 番目の方法が正しい場合 (私が想定している)、fldNo1 が存在しないというエラーが継続的に発生するのはなぜですか?
例: CS1061: 'MyProject.Models.getMyModel' には 'fldNo1' の定義が含まれておらず、タイプ 'MyProject.Models.getMyModel' の最初の引数を受け入れる拡張メソッド 'fldNo1' が見つかりませんでした (using ディレクティブがありませんか?またはアセンブリ参照?)