我有一个包含两个实体(用外键链接)的模型,每个实体都有自己的选项卡,使用局部视图呈现。每个选项卡也有自己的 Ajax 表单。当我在第一个选项卡中保存实体时,我现在有了要返回到两个部分视图的实体的 ID,以便能够保存第二个实体或保存对第一个实体的更新。我无法将此值返回给视图。
该模型:
public class Entity1
{
int ID1 { get; set; }
[Some attributes]
string field1 { get; set; }
}
public class Entity2
{
int ID2 { get; set; }
[Some attributes]
string field2 { get; set; }
}
public class MyModel
{
Entity1 entity1 = new Entity1()
Entity2 entity2 = new Entity2()
}
控制器:
public class MyController : Controller
{
[HttpGet]
public ActionResult Index()
{
var model = new MyModel();
model.entity1.ID1 = 0;
model.entity2.ID2 = 0;
return PartialView(model);
}
[HttpPost]
public ActionResult Index(MyModel model)
{
SaveMyModel(model)
// have tried ModelState.Clear(); here
return PartialView(model);
}
}
最后是两个部分视图之一
@model MyModel
@using (Ajax.BeginForm("Index", "Home",
new AjaxOptions
{
HttpMethod = "POST"
}
))
{
@Html.LabelFor(m => m.Entity1.field1)
@Html.EditorFor(m => m.Entity1.field1)
@Html.HiddenFor(m => m.Entity1.ID1)
<div class="form-actions">
<button type="submit">
Next section</button>
</div>
}
我的保存函数根据 ID1 的值插入或更新。
问题是 ID1 的值始终保持为零,并且隐藏字段在返回时不会刷新。我尝试单步执行剃刀刷新,并且正确的 ID 被发送到视图。
以上是一个简化,但它确实封装了问题。
先感谢您。
更新
如果出现以下情况,我可以让它工作:
- 我的模型中只有一个实体
- 我
ModelState.Clear();
在保存之前添加