【发布时间】:2016-04-10 05:11:47
【问题描述】:
我是 MVC 的新手。在我的应用程序中,我试图根据不同的参数搜索数据。数据存储在数据库中,并使用实体框架访问数据库。由于我需要将来自多个模型的数据显示到一个视图中,我决定使用 ViewModel 将两个类绑定在一起并显示数据。 这是我的代码 模型
[Table("User")]
public partial class User
{
[Key]
public int UserId { get; set; }
[StringLength(50)]
public string FirstName { get; set; }
[StringLength(50)]
public string LastName { get; set; }
[StringLength(50)]
public string Email { get; set; }
public virtual LicenseTypeMaster LicenseTypeMaster { get; set; }
}
[Table("tblLicenseTypeMaster")]
public partial class LicenseTypeMaster
{
Key]
public int LicenseTypeId { get; set; }
[StringLength(100)]
public string LicenseTypes { get; set; }
public int? LicenseCount { get; set; }
}
视图模型
public class UserLicenseTWRBinder
{
VSLicenseDb db = new VSLicenseDb();
public IEnumerable<User> GetUserDetail(string searchBy, string searchValue)
{
List<User> usr = new List<User>();
public List<User> usr { get; set; };
var query = (from u in db.Users
join ut in db.UserLicenseTypes
on u.UserId equals ut.UserId
join tl in db.ToolsLicenseTypes
on ut.ToolLicenseTypeId equals tl.ToolLicenseTypeId
join tm in db.LicenseTypeMasters
on tl.LicenseTypeId equals tm.LicenseTypeId
where u.FirstName == searchBy
select new
{
FirstName = u.FirstName,
LastName = u.LastName,
Email = u.Email,
LicenseAllocated. = tm.LicenseTypes
}).ToList();
return query;
}
}
我希望该方法从 User 模型返回 FirstName、LastName 和 Email,从 LicenseTypeMaster 模型返回 LicenseType。我不确定要将两个模型中的哪些属性包含到 ViewModel 中,以便它只能呈现所需的数据。还有方法的返回类型,以便它可以在控制器中访问,然后可以传递给视图。
请帮忙。
【问题讨论】:
-
我认为您应该从视图模型中删除您的逻辑并将您的 GetUserDetail 放在其他类(业务层)中。另一个提示是,当您将 List
放入视图模型中时,您将数据层绑定到 View,这并不好。 -
@pooriataghizadeh 我应该把它放在控制器中吗?我想通过实例化视图模型类在控制器中调用它。
-
你可以把你的函数放在你想要的每个地方,你可以通过实例化来调用它,但更好的方法是将你的逻辑放在其他层。并将您的逻辑与数据模型和视图(表示层)分开。 programmers.stackexchange.com/questions/246660/…
-
已接受建议!
标签: c# asp.net-mvc asp.net-mvc-4 model asp.net-mvc-viewmodel