#c# #viewmodel #razor-pages #partial-views #asp.net-core-3.1
Вопрос:
Я создаю свой 1-й ASP.Net Основное (3.1) Приложение на странице Razor и у вас есть вопрос о передаче пользовательского объекта в частичное представление.
При разработке ASP.Net Приложения MVC в прошлом я бы использовал ViewModels для передачи пользовательских объектов в представления Razor и частичные представления. Однако, насколько я понимаю, модель страницы в приложении .Net Core Razor Pages действует как модель представления, поэтому не должно быть необходимости использовать класс ViewModel.
Я применял это во всем своем приложении, однако теперь мне нужно отправить пользовательский объект в частичное представление со страницы Razor. Я закончил тем, что использовал класс ViewModel для этого, поскольку я не знаю другого способа сделать это (передача нескольких элементов данных), однако это кажется беспорядочным, и я хотел бы знать, как другие разработчики подошли к тому же.
Является ли этот подход правильным (он действительно работает), или есть другой, более элегантный метод?
Модель страницы бритвы
//Need to pass the object and select lists to Partial View, but unable to do so because
//They are separate items
[BindProperty]
public Person myPerson { get; set; }
public SelectList selectListOne { get; set; }
public SelectList selectListTwo { get; set; }
//Instead have created a custom ViewModel which I will populate and pass to Partial View
[BindProperty]
public viewModel myViewModel { get; set; }
public IActionResult OnGet()
{
myViewModel= new viewModel
{
vmPerson = new Person
{
Name = '',
Date = DateTime.Now
},
vmselectListOne = new SelectList(Enumerable.Range(0, 1000).ToList()),
vmselectListTwo = new SelectList(Enumerable.Range(0, 1000).ToList())
};
return Page();
}
Страница Бритвы Cshtml
@page "{Id:int}"
@model MyApp.Web.CreateModel
<partial name="_myPartial" model="Model.myViewModel" />
Частичный Вид
@using MyApp.Web.Models
@model viewModel
//Populate fields of object and drop down lists etc.
Любой совет приветствуется.
Комментарии:
1. Есть ли какая-либо причина, по которой вы не используете .NET 5?
2. @Полу нужна долгосрочная поддержка. Я не думаю, что .NET 5 или .NET Core 3.1 имеют значение для этого вопроса, хотя?
3. Как бы то ни было, вот как я это делаю.
4. @Майк Спасибо, вашего мнения мне достаточно, чтобы продолжить упомянутый подход.
5. @tcode — Это нормально — мне просто было интересно…