首页 > 解决方案 > 问题:在单个 AspNetCore MVC 视图页面上为具有不同模型的 4 个 PartialView 中的每一个添加共享条件

问题描述

仅供参考,我查看了许多相关站点,事实上,我能够选择一种方法在该研究的单个视图页面上显示具有不同模型的多个局部视图,但这是我之前得到的其他业务的新闻把我带走了。

我需要添加一个条件,例如 where 子句(例如return View(_context.Alert.Where(x => x.AlertIndex == SelectedAlertIndex));到我的 Assemble.cshtml 页面中的以下 PartialViews:

@model edxl_cap_v1_2.Models.ContentViewModels.EdxlCapMessageViewModel

<head>
    <meta name="viewport" content="width=device-width" />
    <title>Assembled EDXL-CAP Message</title>
</head>

<!-- DetailsAlert -->
<div class="content-wrapper">
    @Html.Partial("_DetailsAlert", Model.Alert)
</div>
<!-- End of DetailsAlert -->

<!-- DetailsInfo -->
<div class="content-wrapper">
    @Html.Partial("_DetailsInfo", Model.Info)
</div>
<!-- End of DetailsInfo -->

<!-- DetailsArea -->
<div class="content-wrapper">
    @Html.Partial("_DetailsArea", Model.Area)
</div>
<!-- End of DetailsArea -->

<!-- DetailsResource -->
<div class="content-wrapper">
    @Html.Partial("_DetailsResource", Model.Resource)
</div>
<!-- End of DetailsResource -->

当前,此页面显示DetailsXXXX没有模型项值的 PartialViews。用户通过选择页面上所有四个视图共有的 Alert_Identifier 进入此AlertPick.cshtml页面:

@model edxl_cap_v1_2.Models.ContentViewModels.EdxlCapMessageViewModel

@{
    ViewData["Title"] = "AlertPick";
}

<head>
    <meta name="viewport" content="width=device-width" />
    <title>@ViewBag.Title</title>
</head>

@{
    <h4>@Model.Alerts.Count Alerts</h4>

    <form asp-controller="Alerts" asp-action="PickAlert" method="post">
        <select class="cap_select" id="cap_select" style="width:100%;max-width:95%;"
            asp-for="SelectedAlertIndex" asp-items="Model.Alert_Identifiers">
        <option>Select one</option>
    </select>
    <br />
    <input type="submit" name="PickAlert" value="Pick Alert to Assemble EDXL-Cap Message" />
</form>
}

用户的选择和提交将打开一个页面,该PickAlert.cshtml页面显示表格的行中Alert_Identifier的 4 个DetailsXXXX页面中的每一个,其中的提交按钮为 value Check XXXX,最后第五行的Alert_Identifier和提交按钮为 value Add All

@model IEnumerable<edxl_cap_v1_2.Models.ContentViewModels.Alert>
@using edxl_cap_v1_2.Models.ContentViewModels

@{
    ViewData["Title"] = "PickAlert";

}

<head>
    <meta name="viewport" content="width=device-width" />
    <title>@ViewBag.Title</title>
</head>

    <h4>Alert</h4>
    <div>
        @ViewBag.Message
</div>

<style>
    tr:nth-child(even) { background-color: lightBlue; }

    tr:nth-child(odd) { background-color: white; }
</style>

<table class="smallText">

    @foreach (var item in Model)
    {
        <tr>
            <td>
                &nbsp;&nbsp;
            </td>
            <td>
                <div id="elementInput">

                    <span class="smallText">
                        @Html.DisplayNameFor(model => model.Alert_Identifier) value
                        <input type="text" name="elementValue" value="@Html.DisplayFor(modelItem => item.Alert_Identifier)" size="60" />
                    </span>

                </div>
            </td>
            <td>
                <text>&nbsp;&nbsp;</text>
            </td>
            <td>
                <form asp-area="" asp-controller="alerts" asp-action="_DetailsAlert" method="post" asp-route-id="@item.AlertIndex">
                    <input type="hidden"
                           name="Identifier"
                           value="@Html.DisplayFor(modelItem => item.Alert_Identifier)">
                    <input type="submit"
                           value="Check Alert">
                </form>
            </td>
            <td>
                <text>&nbsp;&nbsp;</text>
            </td>
        </tr>
        <tr>
            <td>
                &nbsp;&nbsp;
            </td>
            <td>
                <div id="elementInput">

                    <span class="smallText">
                        @Html.DisplayNameFor(model => model.Alert_Identifier) value
                        <input type="text" name="elementValue" value="@Html.DisplayFor(modelItem => item.Alert_Identifier)" size="60" />
                    </span>

                </div>
            </td>
            <td>
                <text>&nbsp;&nbsp;</text>
            </td>
            <td>
                <form asp-area="" asp-controller="infos" asp-action="_DetailsInfo" method="post" asp-route-id="@item.AlertIndex">
                    <input type="hidden"
                           name="Identifier"
                           value="@Html.DisplayFor(modelItem => item.Alert_Identifier)">
                    <input type="submit"
                           value="Check Info">
                </form>
            </td>
            <td>
                <text>&nbsp;&nbsp;</text>
            </td>
        </tr>
        <tr>
            <td>
                &nbsp;&nbsp;
            </td>
            <td>
                <div id="elementInput">

                    <span class="smallText">
                        @Html.DisplayNameFor(model => model.Alert_Identifier) value
                        <input type="text" name="elementValue" value="@Html.DisplayFor(modelItem => item.Alert_Identifier)" size="60" />
                    </span>

                </div>
            </td>
            <td>
                <text>&nbsp;&nbsp;</text>
            </td>
            <td>
                <form asp-area="" asp-controller="areas" asp-action="_DetailsArea" method="post" asp-route-id="@item.AlertIndex">
                    <input type="hidden"
                           name="Identifier"
                           value="@Html.DisplayFor(modelItem => item.Alert_Identifier)">
                    <input type="submit"
                           value="Check Area">
                </form>
            </td>
            <td>
                <text>&nbsp;&nbsp;</text>
            </td>
        </tr>
        <tr>
            <td>
                &nbsp;&nbsp;
            </td>
            <td>
                <div id="elementInput">

                    <span class="smallText">
                        @Html.DisplayNameFor(model => model.Alert_Identifier) value
                        <input type="text" name="elementValue" value="@Html.DisplayFor(modelItem => item.Alert_Identifier)" size="60" />
                    </span>

                </div>
            </td>
            <td>
                <text>&nbsp;&nbsp;</text>
            </td>
            <td>
                <form asp-area="" asp-controller="resources" asp-action="_DetailsResource" method="post" asp-route-id="@item.AlertIndex">
                    <input type="hidden"
                           name="Identifier"
                           value="@Html.DisplayFor(modelItem => item.Alert_Identifier)">
                    <input type="submit"
                           value="Check Resource">
                </form>
            </td>
            <td>
                <text>&nbsp;&nbsp;</text>
            </td>
        </tr>
        <tr>
            <td>
                &nbsp;&nbsp;
            </td>
            <td>
                <div id="elementInput">

                    <span class="smallText">
                        @Html.DisplayNameFor(model => model.Alert_Identifier) value
                        <input type="text" name="elementValue" value="@Html.DisplayFor(modelItem => item.Alert_Identifier)" size="60" />
                    </span>

                </div>
            </td>
            <td>
                <text>&nbsp;&nbsp;</text>
            </td>
            <td>
                <form asp-area="" asp-controller="EdxlCapMessageViewModels" asp-action="Assemble" method="post" asp-route-id="@item.AlertIndex">
                    <input type="hidden"
                           name="Identifier"
                           value="@Html.DisplayFor(modelItem => item.Alert_Identifier)">
                    <input type="submit"
                           value="Add All">
                </form>
            </td>
            <td>
                <text>&nbsp;&nbsp;</text>
            </td>
        </tr>
    }
</table>

四个单独的数据类别页面中的每一个都正确显示,但第五行显示的页面仅显示数据类别模型项,没有所选复合消息的值(使用Alert_Identifier)。此页面代表应用程序的候选成品 - 这是页面,将与完成应用程序的页面Assemble.cshtml非常相似。Review.cshtmlApprove.cshtml

我正在接近这个项目的结尾,这里的任何帮助将不胜感激。一旦完成并经过审查,它将开源,希望能吸引更多的开发人员来实施这套 OASIS 应急管理 IT 标准和规范。通过互操作地共享信息(交换数据)来帮助急救人员和应急管理人员更有效地完成工作是有意义的,因此应急数据交换语言 (EDXL) 规范和标准套件。</elevator pitch>

标签: c#asp.net-mvc

解决方案


推荐阅读