Я новичок в MVC. В моем приложении я пытаюсь выполнить поиск данных на основе разных параметров. Данные хранятся в базе данных, и я использую Entity Framework для доступа к db. Поскольку мне нужно отображать данные из нескольких моделей в один вид, я решил использовать ViewModel, чтобы связать оба класса вместе и показать данные. Вот мой код МоделиC#: 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; }
}
ViewModel
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;
}
}
Я хочу способ вернуть ПгвЬЫате, LastName & Электронная почта от модели пользователя и от модели Тип лицензии LicenseTypeMaster. Я не уверен, какие свойства должны быть включены из обеих моделей в ViewModel, чтобы он мог отображать только нужные данные. Также возвращаемый тип метода, чтобы его можно было получить в контроллере, а затем можно передать в представление.
Пожалуйста, помогите.
Я думаю, вы должны удалить свою логику из своей модели просмотра и поместить свой GetUserDetail в другой класс (бизнес-уровень). другой совет - когда вы помещаете List в свою модель. Вы привязываете свой слой данных к View, и это плохо. –
@pooriataghizadeh Должен ли я положить его в контроллер? Я думал о том, чтобы называть его контроллером, создавая класс модели представления. – arpymastro
вы можете поместить свои функции в нужное вам место, и вы можете называть его instantiatin, но лучше всего вы поместите свою логику в другой слой. и отделять логику от вашей модели данных и представления (уровень представления). http://programmers.stackexchange.com/questions/246660/entirely-separate-business-logic-layer-from-mvc –