Поддерживать модель при выполнении Html.BeginForm - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...