Страница 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?

0 ответов

Другие вопросы по тегам