c# - 在 View Asp.Net MVC 中访问数据库实体
问题描述
我想知道如果我们使用这样的 DBEntities 是否正确?意味着这在我们的项目中是否存在安全问题?任何建议或建议请。
看法
@using proName.Models
@{
proNameEntities DB = new proNameEntities();
}
<div class"">
@{
int conID;
var UserExist = DB.Users.Where(x => x.UserID =conID).FirstOrDefault();
if (UserExist != null)
{
<p>@UserExist.name</p>
}
}
</div>
解决方案
要遵循 MVC 模式,您应该:
创建一个视图模型对象
class ViewModel{ public List<Users> Users {get; set;} // whatever the name of your entity is }
从控制器端使用您的列表填充该 ViewModel:
public class HomeController : Controller { proNameEntities DB = new proNameEntities(); //initalise db entities here public ActionResult Index(){ ViewModel vm = new ViewModel(); vm.Users = this.DB.Users return View(vm); // pass the viewmodel object to the view } }
在视图的顶部,指出它正在接收的对象的类型:
@model ViewModel //use full path if it's not in the same scope
然后在视图中使用您的视图模型列表:
@{ foreach (user in Users){ //do something } }
理想情况下,您还希望在控制器中执行 UserExist 逻辑。因此,在 viewmodel 上创建一个新属性,从控制器执行检查,然后将数据插入 ViewModel 对象,并将其传递给 View。
推荐阅读
- php - 如何在sql中通过join选择3条外键记录
- python - Python - Pandas:如果列包含列表中的值,则选择行
- imap - 取消支持基本身份验证后,使用 C# AE.Net.Mail 的 IMAP 是否可以工作
- python - 尝试使用 urllib 下载文件时出现 URLopen 错误
- arrays - Ajax 调用输出和超时
- javascript - Windows 确认 - 默认操作不起作用
- mongodb - 从 mongodb 中的 csv 文件中查询导入的文档时获取空数组
- sql - Prepare Statement 与直接查询相比非常慢 | 甲骨文数据库
- python - 使用 MySQL db 的多线程 select sql 查询时 Python 程序挂起
- gradle - jacocoRootReport 仅显示多项目 gradle 构建的最后一个项目的覆盖率