Только к вашему сведению, я просмотрел множество связанных сайтов и, фактически, мне удалось выбрать метод отображения нескольких частичных представлений с разными моделями на одной странице просмотра из этого исследования, но это насколько ядо того, как меня забрала пресса других компаний.
Мне нужно добавить условие, такое как предложение where (например, return View(_context.Alert.Where(x => x.AlertIndex == SelectedAlertIndex));
, в следующие PartialViews на моей странице Assemble.cshtml:
@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
страниц в строках таблицы с кнопкой отправки значения Check XXXX
и последней, пятой строкой сAlert_Identifier
и кнопку отправки значения 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>
</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> </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> </text>
</td>
</tr>
<tr>
<td>
</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> </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> </text>
</td>
</tr>
<tr>
<td>
</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> </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> </text>
</td>
</tr>
<tr>
<td>
</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> </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> </text>
</td>
</tr>
<tr>
<td>
</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> </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> </text>
</td>
</tr>
}
</table>
Каждая из четырех отдельных страниц категорий данных отображается правильно, но страница отображается пятым роw отображает только элементы модели категории данных без значений для выбранного составного сообщения (используя Alert_Identifier
).Эта страница представляет собой готовый продукт-кандидат приложения - это страница Assemble.cshtml
, и она будет очень похожа на страницы Review.cshtml
и Approve.cshtml
, которые завершат приложение.
Я приступаю к завершению этого проекта, и любая помощь здесь будет чрезвычайно признательна.После того, как все будет сделано и проверено, он пойдет с открытым исходным кодом, надеясь привлечь больше разработчиков для внедрения набора стандартов и спецификаций OASIS Emergency Management IT.Имеет смысл помочь сотрудникам службы быстрого реагирования и менеджерам по чрезвычайным ситуациям более эффективно выполнять свою работу, обеспечивая совместный обмен информацией (обмен данными), отсюда и набор спецификаций и стандартов для языка аварийного обмена данными (EDXL). </elevator pitch>