Как передать модель из представления в другое представление без потери данных? - PullRequest
0 голосов
/ 23 ноября 2018

Я знаю, что вопрос может быть странным, но я пытаюсь передать данные, которые заполнены в представлении и возвращены моему контроллеру в другое представление для заполнения всех переменных.Моя проблема заключается в том, что каждый раз, когда я передаю данные, которые правильно получены из первого просмотра, во второй просмотр, второй просмотр возвращает мне новую модель, с данными, заполненными во втором просмотре.Для лучшего понимания здесь мой код:

Контроллер:

    [HttpPost]
public IActionResult SubmitCharInfo(Character character) {
    //charRepo.SaveCharacter(character);
    return View("Char_StandartAttributes", character);
}

[HttpPost]
public IActionResult CharAllSkills(Character character) {
    charRepo.UpdateCharacter(character);
    return View("Char_FirstSkillPage");
}

Код с моего первого просмотра:

    @model Character

<form method="post" asp-action="SubmitCharInfo">
    <input type="hidden" asp-for="ownerID" />
    <input type="hidden" asp-for="charID" />
    <table  class="table table-bordered table-dark text-center">
        <tbody>
            <tr>
                <th>Enter a character name:</th>
                <td><input asp-for="charName" class="input-validation-error" data-for="true" data-val-required="Please enter your phone number" /></td>

            </tr>
            <tr>
                <th>Enter a age:</th>
                <td><input asp-for="charAge"/></td>
            </tr>
            <tr>
                <th>Enter a job:</th>
                <td><input asp-for="charJob" /></td>
            </tr>
            <tr>
                <th>Enter a place of residence:</th>
                <td><input asp-for="charPOR" /></td>
            </tr>
            <tr>
                <th>Enter a gender:</th>
                <td><input asp-for="charGender" /></td>
            </tr>
            <tr>
                <th>
                    <div data-valmsg-for="charStory" data-valmsg-replace="true" class="alert-danger"></div>
                    Enter a story:
                </th>
                <td><input asp-for="charStory" /></td>
            </tr>
            <tr>
                <td colspan="2">
                    <button type="submit" class="btn">Submit</button>
                </td>
            </tr>
        </tbody>
    </table>
</form>

А вот код моего второго просмотра:

@model Character


<form method="post" asp-action="CharAllSkills">
    <table class="table table-bordered table-dark text-center">
        <thead>
            <tr>
                <th colspan="2"><h1>Standart Skills</h1></th>
            </tr>
            <tr>
                <th colspan="2"><h3>Enter a value for...</h3></th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <th>close range combat:</th>
                <td><input asp-for="standartSkills.AttackeNahkampf" /></td>
            </tr>
            <tr>
                <th>stamina:</th>
                <td><input asp-for="standartSkills.Ausdauer" /></td>
            </tr>
            <tr>
                <th>inteligence:</th>
                <td><input asp-for="standartSkills.Intelligenz" /></td>
            </tr>
            <tr>
                <th>strength: </th>
                <td><input asp-for="standartSkills.Koerperkraft" /></td>
            </tr>
            <tr>
                <th>strength:</th>
                <td><input asp-for="standartSkills.MentaleBelastbarkeit" /></td>
            </tr>
            <tr>
                <th>weapon handling:</th>
                <td><input asp-for="standartSkills.Waffenumgang" /></td>
            </tr>
            <tr>
                <td colspan="2">
                    <button type="submit" class="btn">Submit</button>
                </td>
            </tr>
        </tbody>
    </table>
</form>

Вот живой пример значений:

Значения, полученные из первого представления

После передачи Модели во второй просмотр и получениямои данные модели изменились на:

Значения во втором представлении # 1

Значения во втором представлении # 2

Почему это происходит и как это исправить?

Ответы [ 2 ]

0 голосов
/ 23 ноября 2018

После возврата, это новая страница.Передача параметров в представление - это один из способов сохранить данные, а загрузка данных из базы данных - другим способом.

Новая страница: Данные -> Модель -> Вид -> Действие -> ушел!

Еще одна новая страница: Данные -> Модель -> Вид -> Действие -> Ушло!

Итак, вам нужно перезагрузиться с самого начала после действия.

0 голосов
/ 23 ноября 2018

Я не уверен, что ваш вопрос имеет смысл, но это может быть только моим отсутствием понимания относительно MVC.

Жизненный цикл страницы диктует, что страница должна быть построена,постбэк должен быть обработан, все это должно быть отправлено пользователю и удалено из памяти как можно скорее.Страница (View + Model) даже не будет в памяти после отправки пользователю.Данные не могут сохраняться в модели или представлении.

Если вам нужно хранить данные между постбэками, вы должны сохранить их где-нибудь за пределами страницы.Базы данных очень распространены.ASP.Net также имеет некоторые менее устойчивые подходы к хранилищу данных.И как только у вас есть данные, которые можно восстановить для модели А или модели В., это тривиальная деталь.

...