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