C# .NET Core将单个属性传递给局部视图
在使用Razor页面的ASP.NET Core 3.1项目中,我有以下页面模型:C# .NET Core将单个属性传递给局部视图,c#,asp.net,asp.net-core,C#,Asp.net,Asp.net Core,在使用Razor页面的ASP.NET Core 3.1项目中,我有以下页面模型: [BindProperty] public AddUserPageModel Input { get; set; } public class AddUserPageModel { public string UserName { get; set; } public string Password { get; set; } public List<IFormFile> Im
[BindProperty]
public AddUserPageModel Input { get; set; }
public class AddUserPageModel
{
public string UserName { get; set; }
public string Password { get; set; }
public List<IFormFile> ImageUploads { get; set; }
}
[BindProperty]
public AddUserPageModel输入{get;set;}
公共类AddUserPageModel
{
公共字符串用户名{get;set;}
公共字符串密码{get;set;}
公共列表图像上载{get;set;}
}
从这个Razor页面视图中,我插入了一个局部视图,并传递了作为单个属性的模型:
<partial name="Partials/_AddPhotos" model="@Model.Input.ImageUploads" />
从部分观点来看:
@model List<Microsoft.AspNetCore.Http.IFormFile>
<input asp-for="@Model" type="file" multiple>
@型号列表
这将导致以下错误:
System.ArgumentException:HTML字段的名称不能为null或空。
因此,问题似乎出现在局部视图中,
asp for=“@Model”
需要一个.PropertyName
,但我不确定如何实现这一点?我认为您可以将@Model.Input
传递到局部视图中
@model Project.Models.AddUserPageModel
<input asp-for="@Model.ImageUploads" type="file" multiple>
并在局部视图中使用AddUserPageModel作为页面模型
@model Project.Models.AddUserPageModel
<input asp-for="@Model.ImageUploads" type="file" multiple>
@model Project.Models.AddUserPageModel
这确实有效,但感觉有点像黑客。asp-for属性根据属性名添加id和名称。模型似乎不能是单一类型的。