首页 > 解决方案 > 在 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>

标签: c#asp.net-mvcmodel-view-controller

解决方案


要遵循 MVC 模式,您应该:

  1. 创建一个视图模型对象

    class ViewModel{
        public List<Users> Users {get; set;} // whatever the name of your entity is
    }
    
  2. 从控制器端使用您的列表填充该 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
        }
    }
    
  3. 在视图的顶部,指出它正在接收的对象的类型:

    @model ViewModel //use full path if it's not in the same scope
    
  4. 然后在视图中使用您的视图模型列表:

    @{
      foreach (user in Users){
           //do something
      }
    }
    

理想情况下,您还希望在控制器中执行 UserExist 逻辑。因此,在 viewmodel 上创建一个新属性,从控制器执行检查,然后将数据插入 ViewModel 对象,并将其传递给 View。


推荐阅读