asp.net MVC3局部视图结果没有更新EditorFor值
我有一个简单的电子邮件捕获表单作为我的主页的一部分,但是当我返回局部视图时,表单的编辑器的模型值没有得到更新:
该模型
public class Contact { [Key] public int Id { get; set; } [Required] public string Email { get; set; } [NotMapped] public string Message { get; set; } }
观点
@model TestApp.Models.Contact @{ ViewBag.Title = "Home Page"; } $(function () { // ajax form post $("#EmailForm").ajaxForm(function (result) { $("#EmailForm").html(result); // post results }); }); @using (@Html.BeginForm("SaveEmail", "Home", FormMethod.Post, new { id = "EmailForm" })) { @Html.Partial("SaveEmail", Model); }
偏袒
@model TestApp.Models.Contact @Html.LabelFor(m => m.Email) : @Html.EditorFor(m => m.Email) @Html.ValidationMessageFor(m => m.Email) @Html.DisplayFor(m => m.Message)
控制器
[HttpPost] public PartialViewResult SaveEmail(Contact contact) { if (ModelState.IsValid) { //TODO: save e-mail to database contact.Message = "You e-mail has been added to our database - Thank y ou"; contact.Email = ""; return PartialView(contact); } return PartialView(); }
这会按预期返回模型错误,在模型状态有效时返回消息,但响应中的电子邮件文本框值不会更新
发送电子邮件a@b.com时,回复forms为firebug
: You e-mail has been added to our database - Thank you
我已经尝试创建一个新模型并将其传递给我,我已经尝试了ModelState.Clear(),我可以通过一点点jquery解决问题
$("#Email").val(''); // clear the email address
但这似乎有点hacky,我想了解发生了什么。
在将电子邮件字段设置为空字符串之后添加ModelState.Clear()并在返回PartialView之前添加一个ModelState.Clear()应该可以解决问题。 您也可以尝试ModelState.Remove(“Email”)。
有关内置帮助程序以这种方式运行的原因的详细信息,请参阅此博客文章 。
- 使用HTTPStatusCodeResult和jQuery的自定义错误消息
- ASP.NET MVC可以使用带有动态类型参数的参数将JSON对象传递给控制器吗?
- 如何使用asp.net mvc 3 jqueryvalidation与jjery对话框进行ajax提交?
- 将javascript全局变量设置为JSONresult?
- 为AJAX加载PartialView,为非AJAX请求加载View
- ASP.NET MVCvalidation使用qTip jQuery插件
- 使用mvc 3 razor cshtml中的konckout.js创建一个带按钮的网格
- 动态创建嵌套的JSON对象
- 如何在ASP.NET MVC 3中通过AJAX登录