这是模型example.cs
namespace View_Partial_Editor.Models
{
public class ExampleView
{
...
public string Field1 { get; set; }
public string Field2 { get; set; }
public string Field3 { get; set; }
public string Field4 { get; set; }
public string Field5 { get; set; }
...
}
}
我有这个观点example.cshtml
:
@model View_Partial_Editor.Models.ExampleView
@{Html.RenderPartial("EditExample",Model);}
@Html.TextBoxFor(m => m.Field1)
然后我有了这个partialView EditExample.cshtml
:
@model View_Partial_Editor.Models.ExampleView
@Html.HiddenFor(m => m.Field1)
@using (Ajax.BeginForm("EditExample", new AjaxOptions { InsertionMode = InsertionMode.Replace, UpdateTargetId = "partial" }))
{
<div>
@Html.EditorFor(m => m, "Editor", null)
</div>
<p>
<input id="buttona" type="submit" value="Save" />
</p>
}
我有这个控制器ExampleController
:
namespace View_Partial_Editor.Controllers
{
public class ExampleController : Controller
{
//
// GET: /Example/
public ActionResult Example()
{
return View();
}
[HttpPost]
public ActionResult EditExample(ExampleView example)
{
example.Field1 ="7";
return View("Example", example);
}
}
}
这是在部分editor.cshtml
@model View_Partial_Editor.Models.ExampleView
<div class="editor-label">
@Html.LabelFor(m => m.Field1 )
</div>
<div class="editor-field">
@Html.EditorFor(m => m.Field1)
@Html.ValidationMessageFor(m => m.Field1)
</div>
<div class="editor-label">
@Html.LabelFor(m => m.Field2)
</div>
<div class="editor-field">
@Html.EditorFor(m => m.Field2)
@Html.ValidationMessageFor(m => m.Field2)
</div>
我的问题是我想在ajax调用中修改控制器中模型的数据,并将修改后的模型返回到exampleView
。但是当ajax调用完成时,我在控制器未在模型中更改
编辑:我想要的是将调用发送到ajax方法,保存数据库中的内容,然后修改模型,在示例视图中,我希望将该模型与更改一起使用。
此时,如果我用ajax的结果替换局部视图,示例视图中的模型不会被修改。另一种方法是替换完整的示例视图,因此模型在那里被接收,但我有使用Html.HiddenFor传递很多字段,可以在不更换视图的情况下进行此操作,只返回带有更改的模型
答案 0 :(得分:0)
尝试在HttpPost操作方法中调用ModelState.Clear()
。 Html助手首先使用ModelState中的值,然后使用Model。因此,如果在帖子中更改模型中的值,则需要清除ModelState中的值。