2
我有一個簡單的電子郵件捕獲表單作爲我的主頁的一部分,但是當我返回部分視圖時,表單編輯器的模型值沒有得到更新: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";
}
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.form.js")" type="text/javascript"></script>
<script type="text/javascript" >
$(function() {
// ajax form post
$("#EmailForm").ajaxForm(function (result) {
$("#EmailForm").html(result); // post results
});
});
</script>
@using (@Html.BeginForm("SaveEmail", "Home", FormMethod.Post, new { id = "EmailForm" }))
{
@Html.Partial("SaveEmail", Model);
}
的部分
@model TestApp.Models.Contact
<span class="editor-label">
@Html.LabelFor(m => m.Email) :
</span>
<span class="editor-field">
@Html.EditorFor(m => m.Email)
</span>
<input type="submit" value="Submit" />
<div id="message">
@Html.ValidationMessageFor(m => m.Email)
@Html.DisplayFor(m => m.Message)
</div>
<br/>
[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();
}
這將返回模型誤差如預期,當模型狀態是有效的返回消息,但在響應電子郵件文本框的值並沒有更新
的反應形式螢火蟲當控制器發佈電子郵件[email protected]
<span class="editor-label">
<label for="Email">Email</label> :
</span>
<span class="editor-field">
<input class="text-box single-line" id="Email" name="Email" type="text" value="[email protected]" />
</span>
<input type="submit" value="Submit" />
<div id="message">
You e-mail has been added to our database - Thank you
</div>
<br/>
我試圖創建一個新的模型,並通過在,我試過ModelState.Clear(),我可以用littl解決問題e jquery
但是,這看起來有點冒險,我想了解發生了什麼。
偉大的工作,但從你提到的職位來看,我應該使用Post-redirect-get模式,而不是對嗎? – Axe 2011-06-16 09:48:28
如果你的目標是簡單地顯示一條確認消息,說明一條記錄已保存到數據庫,那麼是的。 – gram 2011-06-16 12:46:10
@gram謝謝。究竟是什麼阻止了AJAX刷新我正在做的工作 – 2013-07-18 10:14:24