我知道这个问题可能很奇怪,但是我试图将填充在一个View中并返回给我的Controller的数据传递给另一个View,以填充所有变量。我的问题是,每当我将从第一个视图正确接收的数据传递给第二个视图时,第二个视图都会向我返回一个新模型,仅包含数据,该模型填充在第二个视图中。为了更好地理解我的代码,
控制器:
[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>
以下是值的实时示例:
Values received from the first view
将模型传递到第二个视图并接收到我的模型数据后,更改为:
为什么会发生这种情况以及如何解决?
答案 0 :(得分:0)
我不确定您的问题是否有意义,但这可能只是我对MVC缺乏了解。
page lifecycle指示要构建页面,处理回发,将整个内容发送给用户并尽快从内存中删除。将页面(视图+模型)发送给用户后,甚至将不再在内存中。数据不能持久保存在模型或视图中。
如果需要在回发之间保留数据,则必须将其保存在页面外的某个位置。数据库很常见。 ASP.Net还具有一些不太持久的与会话相关的存储方法。一旦有了数据持久性,就可以为模型A或模型B检索数据,这是一个琐碎的细节。
答案 1 :(得分:0)
返回视图后,它是一个新页面。将参数传递给视图是保留数据或从数据库重载数据的另一种方法。
新页面:数据->模型->视图->操作->消失了!
另一个新页面:数据->模型->视图->动作->消失了!
因此,您必须从一开始就重新加载。