带有HtmlFieldPrefix的Razor页面未绑定到模型

时间:2018-12-03 21:24:22

标签: asp.net-core-2.1 razor-pages

我有一个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)

问题是,我们该如何使用剃须刀页面?

0 个答案:

没有答案