C# 模型属性未传递到下一个视图
我正在尝试在asp.net mvc的不同视图中重用模型。但是,如果将模型传递到下一个视图并提交新属性,则旧值将丢失 下面是我正在使用的代码示例: 模型 控制器C# 模型属性未传递到下一个视图,c#,asp.net,model-view-controller,C#,Asp.net,Model View Controller,我正在尝试在asp.net mvc的不同视图中重用模型。但是,如果将模型传递到下一个视图并提交新属性,则旧值将丢失 下面是我正在使用的代码示例: 模型 控制器 public class HomeController : Controller { public IActionResult Page1() { return View(new ExampleModel()); } public I
public class HomeController : Controller
{
public IActionResult Page1()
{
return View(new ExampleModel());
}
public IActionResult Page1Check(ExampleModel model)
{
return View("Page2", model);
}
public IActionResult Page2Check(ExampleModel model)
{
return View("Page2", model);
}
}
视图1
@model-Example.Models.ExampleModel
@addTagHelper*,Microsoft.AspNetCore.Mvc.TagHelpers
提交
视图2
@model-Example.Models.ExampleModel
@addTagHelper*,Microsoft.AspNetCore.Mvc.TagHelpers
提交
如果打开第1页,将创建一个新模型。如果在第1页中输入了Attribute1并提交了Page1,则会调用Check并填写Attribute1。现在模型被传递到第2页。此处填写并提交属性2。但是,如果我检查Page2Check内部的模型,则Attribute1为空,并且只填充Attribute2
奇怪的是,如果我在page2视图中检查Attribute1,它仍然存在。只有在提交后,Attribute1才会消失
我是否遗漏了一些内容,如何防止提交后填写的属性为空?为了在提交相应表单时从用户浏览器向服务器发送一段数据,它必须包含在将发送到服务器的HTML元素中(例如
或
)
在第一个视图中,您有attribute1
的输入,但没有attribute2
的输入,因此提交视图1中的表单时,attribute2
不会成为发送到服务器的数据的一部分。视图2中的attribute1
也是如此
要解决此问题,您可以向
标记包含的每个视图添加隐藏字段,以存储数据:
- 对于视图1,添加
- 对于视图2,添加
<form asp-controller="Home" asp-action="Page1Check">
<label asp-for="Attribut1"></label>
<input asp-for="Attribut1" placeholder="Attribut1" />
<input type="hidden" asp-for="Attribut2" />
<button type="submit">Submit</button>
</form>
提交
为了在提交相应表单时将数据从用户浏览器发送到服务器,它必须包含在将发送到服务器的HTML元素中(例如
或
)
在第一个视图中,您有attribute1
的输入,但没有attribute2
的输入,因此提交视图1中的表单时,attribute2
不会成为发送到服务器的数据的一部分。视图2中的attribute1
也是如此
要解决此问题,您可以向
标记包含的每个视图添加隐藏字段,以存储数据:
- 对于视图1,添加
- 对于视图2,添加
<form asp-controller="Home" asp-action="Page1Check">
<label asp-for="Attribut1"></label>
<input asp-for="Attribut1" placeholder="Attribut1" />
<input type="hidden" asp-for="Attribut2" />
<button type="submit">Submit</button>
</form>
提交
@model Example.Models.ExampleModel
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
<form asp-controller="Home" asp-action="Page2Check">
<label asp-for="Attribut2"></label>
<input asp-for="Attribut2" placeholder="Attribut2" />
<button type="submit">Submit</button>
</form>
<form asp-controller="Home" asp-action="Page1Check">
<label asp-for="Attribut1"></label>
<input asp-for="Attribut1" placeholder="Attribut1" />
<input type="hidden" asp-for="Attribut2" />
<button type="submit">Submit</button>
</form>