如何使用 asp-for 获取模型的完整命名空间路径

How to get full namespace path of model with asp-for

我目前正在为电子商务项目编写单页结帐​​功能。此功能在表单字段中有注册和来宾选项卡,并且都有地址字段,如街道、名字、姓氏等。我使用单选输入将它们分开

<input type="radio" hidden value="guest" asp-for="AuthModule.AuthType" />

此 AuthModule class 注册和来宾都作为 class 命名为 "Register"

  public partial class AuthModule
  {
      public Register Register { get; set; }
      public Register Guest { get; set; }
      public string AuthType { get; set; }
  }  

我也有一个名为 InvoiceAddress.cshtml 的部分视图,我正在使用 Firstname、Lastname、Street 等的一堆输入...但是我希望这个 InvoiceAddress 部分可用于 Register 和 Guest,这使得像不同属性的相同输入一样混乱,这使得验证变得困难,所以我想我可以通过像这样命名空间来分离它们:

<label asp-for="InvoiceAddress.Firstname">@Localizer["deliveryAddressFormFirstname"]</label>

输出为:

<input type="text" class="form-control is-required" id="InvoiceAddress_Firstname" name="InvoiceAddress.Firstname">

因为 Register 和 Guest 都具有相同的模型,在部分视图结果中给定 @model 类型仅 InvoiceAddress.Firstname 作为输入名称,但我需要使此名称成为完整路径,如 AuthModule.Register。 InvoiceAddress.Firstname

我认为您要查找的是 PartialTagHelper 上的 for 属性:

<partial name="_InvoiceAddress" for="Register.InvoiceAddress" />