c# - ASP.NET核心: How to add a second model to my View

标签 c# html asp.net-core-3.1

我的索引 View 有一个如下所示的模型:

@model IEnumerable<WebSurvey.Data.Models.Question>

并由此使用:

<tbody>
    @foreach (var item in Model)
    {
        <tr>
            <td>
                @Html.DisplayFor(modelItem => item.Question1)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.ReplyOptions)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Group)
            </td>
        <tr>
    }
</tbody>

但我还需要一个如下所示的模型:

@model WebSurvey.Data.Models.Question

这样我就可以使用“asp-for”中“问题”的属性来创建新问题,因为它不适用于当前模型。

我的问题:有没有办法在我看来创建另一个模型?

希望你能帮助我:)

最佳答案

您应该考虑始终创建一个名称与您的 View 相对应的模型,而不是首先关注您可能要显示的数据。

如果您的 View 名为 Questions,您应该创建一个名为 QuestionsViewModel 的模型。

public class QuestionsViewModel { }

之后,您可以考虑要添加哪些数据,因此如果您有问题列表,请将其作为属性添加到类中。

public class QuestionsViewModel
{
    public IEnumerable<Question> Questions { get; set; }
}

/// In your view
@foreach (var question in Model.Questions)
{
}

后来您决定还需要一个用户

public class QuestionsViewModel
{
    public IEnumerable<Question> Questions { get; set; }
    public User User { get; set; }
}

/// In your view
<span>@Model.User.Username</span>
@foreach (var question in Model.Questions)
{
}

重点是,您现在可以添加任意数量的属性。

关于c# - ASP.NET核心: How to add a second model to my View,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64441765/

相关文章:

c# - 回发与 Javascript 客户端计算

html - Firefox 8 仍然不支持多行标题或替代文本 ("tooltips")?

html - 无法使 div 正确 float (可能是因为 flexbox?)

c# - 如何在托管代码中创建 Windows 安全描述符?

c# - 在类中使用覆盖而不是事件订阅

html - 柔性 : Scrollable div inside flex-column

c# - 如何为 appsettings.json 复杂数组使用选项模式

c# - 如何在 ASP.NET Core 3.1 中获取当前的 JsonSerializerOptions?

reactjs - 如何在 ASP.NET Core 3 React 应用程序的 index.html 中从服务器注入(inject)数据

c# - 无法让 SAFEARRAY 与 Interop 一起工作