Я довольно новичок в кодировании на бритвенных страницах и. NET ядре. Это может быть легко решить проблему, но я не могу найти ресурсы, чтобы помочь мне. Самая близкая, что я нашел, - это ссылка, но я либо не понимаю ее, либо не думаю, что она применима, потому что я стараюсь избегать использования контроллера как можно лучше, поскольку использую страницы Razor.
Как отобразить текст свойства вместо идентификатора в Razor MVC 3
У меня есть одна страница, позволяющая создать новую запись для нового сотрудника. У меня есть другая страница, которая позволяет вам создать задачу и назначить ее сотруднику из этого списка с помощью раскрывающегося меню. Это мой код для запроса информации для раскрывающегося меню, которое работает, как и ожидалось.
public class EmployeeNamePageModel : PageModel
{
public List<SelectListItem> EmployeeNameSL { get; set; }
public void PopulateEmployeesDropDownList(ServiceContext _context)
{
EmployeeNameSL = _context.Employees_Informations.Select(a => new SelectListItem
{
Value = a.ID.ToString(),
Text = a.employeename
}).ToList();
}
}
Это код на моей странице создания для заданий. При нажатии кнопки «Создать», как и ожидалось, открывается новая страница, где я вводю свою информацию и выбираю сотрудника из раскрывающегося списка.
public class CreateModel : EmployeeNamePageModel
{
private readonly Template.Data.ServiceContext _context;
public CreateModel(Template.Data.ServiceContext context)
{
_context = context;
}
public IActionResult OnGet()
{
PopulateEmployeesDropDownList(_context);
return Page();
}
[BindProperty]
public Service_Request_Information Service_Request_Information { get; set; }
// To protect from overposting attacks, please enable the specific properties you want to bind to, for
// more details see https://aka.ms/RazorPagesCRUD.
public async Task<IActionResult> OnPostAsync()
{
if (!ModelState.IsValid)
{
return Page();
}
_context.Service_Request_Informations.Add(Service_Request_Information);
await _context.SaveChangesAsync();
return RedirectToPage("./Index");
}
}
Однако после сохранения страницы и ее индексации вместо имени сотрудника я вижу основной идентификатор. Моя работа сейчас заключается в том, чтобы просто не запрашивать идентификатор в функции PopulateEmployeesDropDownList и вместо этого запрашивать только имя сотрудника. Однако в конечном итоге мне нужно будет узнать идентификатор выбранного сотрудника, чтобы позднее я мог использовать его в функции для отправки по электронной почте этому человеку.
Итак, как я могу получить имя человека, которое будет отображаться на странице указателя, вместо идентификатора этого человека? Ответ в ссылке выше говорит об использовании модели представления, но он использует контроллер, если я правильно понимаю. С бритвенными страницами я понимаю, что контроллеры не нужны; поэтому я не хотел бы использовать их, если смогу помочь.
РЕДАКТИРОВАТЬ: Это мой код для просмотра раскрывающегося меню на странице создания. Раскрывающееся представление в порядке, это когда оно индексируется после отправки, это поле сохраняется как идентификатор.
<div class="form-group">
<label asp-for="Service_Request_Information.AssignedTech" class="control-label"></label>
<select asp-for="Service_Request_Information.AssignedTech" class="form-control"
asp-items="Model.EmployeeNameSL">
<option value="">-- Select --</option>
</select>
<span asp-validation-for="Service_Request_Information.AssignedTech" class="text-danger"></span>
</div>