我有一个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(Prefix =“ MyPrefix”)] )来解析字段名称和模型属性。
public JsonResult Create([Bind(Prefix = "MyPrefix")]StaffMember staff)
问题是,我们该如何使用剃须刀页面?