У меня есть html-страница синтаксиса бритвы, которая показывает некоторые данные модели, которые передаются из контроллера в представление.После того, как данные представлены, пользователь может нажать на кнопку, относящуюся к некоторому элементу в моей модели, поэтому на основе нажатой кнопки будет представлено больше связанных с элементом данных.
Чтобы добиться этого, я пытаюсьотправить в контроллер идентификатор (целое число), поэтому контроллер запишет в ViewData и перезагрузит страницу с моделью той же , но теперь на странице будет отображаться больше информации из модели (потому что пользователь нажал накнопка..).Но я просто не могу понять, как поддерживать тот же сложный объект модели.
Мой контроллер:
// The Entry point to the controller
[Route("[controller]/[action]/cardNumber")]
[HttpPost]
public IActionResult Inspect(string cardNumber)
{
var dataObject = GetDataObjectModel();
return View(dataObject);
}
[Route("[controller]/[action]/model/ruleId")]
[HttpPost]
public IActionResult ExpandRules(int ruleId)
{
ViewData["RuleId"] = ruleId;
return View("Inspect"); // Somehow need to use same model from above here
}
Inspect.cshtml:
<table>
<caption>Rules</caption>
<thead>
<tr>
<th>Expand DoorGroups</th>
<th>Rule Name</th>
<th>Exists in Database</th>
<th>Exists in Staging Card</th>
<th>Exists in Proxy</th>
<th>Exists in Controller</th>
</tr>
</thead>
<tbody>
@if (Model.RulesFromDb != null)
{
foreach (var rule in Model.RulesFromDb)
{
<tr>
<td>
<!-- THE BUTTON -->
@using (Html.BeginForm("ExpandRules", "Inspector", new {ruleId = rule.Id}, FormMethod.Post))
{
<input type="submit" value="+"/>
}
</td>
<td>
@Html.DisplayTextFor(model => rule.Name)
</td>
<td>
V
</td>
<td>
@(Model.RulesFromStaging.Exists(x => x.Id == rule.Id) ? "V" : "X")
</td>
<td>
@if (Model.RulesFromProxy != null)
{
@(Model.RulesFromProxy.Exists(x => x.Id == rule.Id) ? "V" : "X")
}
else
{
@Html.Raw("Data not Provided")
}
</td>
<td>
@if (Model.RulesFromController != null)
{
@(Model.RulesFromController.Exists(x => x.Id == rule.Id) ? "V" : "X")
}
else
{
@Html.Raw("Data not Provided")
}
</td>
</tr>
}
}
</tbody>
</table>