有时我把我的一些C#代码放在我的视图(.cshtml
)中,而不是我所有的代码。比如我有一个名为LawCategory表,我这样做:在cshtml视图中使用实体框架的缺点
@{
var db = new Contracts.Models.DataContext();
var LawCat = db.LawCategory.ToList();
}
,然后用它是这样的:
<div class="col-md-6">
<label>category:</label>
<select name="Type" id="Type" class="form-control">
<option value="0">All</option>
@foreach (var i in LawCat)
{
<option value="@i.ID" @(Request.QueryString["id"] == i.ID.ToString() ? "selected" : "")>@i.Name</option>
}
</select>
</div>
我想知道什么是在视图中使用的DataContext的缺点和连接到数据库,而不是从控制器发送视图模型?
确实这样做,可能会导致设置多重连接到数据库? (实体框架)
它的设计很差。假设你可以用1000行代码编写一个完整的应用程序,但是你不应该因为它的设计不佳。该视图应该只涉及表示逻辑,与数据存储的交互应该在控制器中进行,或者在调用堆栈之后进行。 – Igor
基于意见。不适合堆栈溢出。 –