Страница Razor с HtmlFieldPrefix не привязана к модели
У меня есть страница Razor, которая позволяет вам создать нового сотрудника. Модель страницы - это свойство одного объекта.
[BindProperty]
public StaffMember Staff { get; set; }
Может быть несколько экземпляров этой страницы в DOM в любое время. Чтобы избежать конфликтов имен, я установил HtmlFieldPrefix.
public IActionResult OnGet(int caseId)
{
Staff = new StaffMember{CaseId = caseId};
ViewData.TemplateInfo.HtmlFieldPrefix = $"CSR-C{caseId}";
return Page();
}
Это работает, как ожидается, пока форма не будет опубликована в методе onPostAsync. Свойство сотрудника возвращается как пустой экземпляр.
<form id="MyForm" method="post"
data-ajax="true"
data-ajax-method="POST"
data-ajax-url="@Url.Action("_Create", "Staff")" >
...
</form>
public async Task<IActionResult> OnPostAsync()
{
if (!ModelState.IsValid)
{
return Page();
}
// Staff is always an empty instance ...
_context.Attach(Staff).State = EntityState.Added;
await _context.SaveChangesAsync();
return null;
}
Я знаю, что это из-за префикса (если я удаляю его, модель заполняется), и в MVC мы использовали нотацию Bind ([Bind (Prefix = "MyPrefix")]) для разрешения имен полей и свойств модели.
public JsonResult Create([Bind(Prefix = "MyPrefix")]StaffMember staff)
Вопрос в том, как нам это сделать с помощью Razor Page?