【问题标题】:.NET Core passing a single property to a Partial View.NET Core 将单个属性传递给局部视图
【发布时间】:2020-05-18 17:48:51
【问题描述】:

在使用 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> ImageUploads { 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: The name of an HTML field cannot be null or empty.

所以看来问题在于部分观点,asp-for="@Model" 需要 .PropertyName 但我不确定如何实现这一点?

【问题讨论】:

    标签: c# asp.net asp.net-core


    【解决方案1】:

    我认为您可以将@Model.Input 传递给您的局部视图。

    并使用 AddUserPageModel 作为局部视图中的页面模型。

    @model Project.Models.AddUserPageModel
    
    <input asp-for="@Model.ImageUploads" type="file" multiple>
    

    【讨论】:

    • 这确实有效,但感觉有点像 hack。
    • asp-for 属性根据属性名称添加一个id和一个名称。该模型似乎不能是单一类型。
    猜你喜欢
    • 1970-01-01
    • 2018-02-16
    • 2013-12-19
    • 1970-01-01
    • 1970-01-01
    • 2018-02-02
    • 1970-01-01
    • 2019-02-01
    • 2013-08-14
    相关资源
    最近更新 更多