Страница Razor с HtmlFieldPrefix не привязана к модели - PullRequest
0 голосов
/ 04 декабря 2018

У меня есть страница 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?

...