我正在爲項目使用MVC 4。我的視圖中的一個具有作爲在其2個局部視圖:兩個部分視圖,將數據發佈到導致問題的操作
<div id="fPassword">
@Html.Partial("_ForgotPassword",new UserForgotPasswordModel())
</div>
<div id="aLink">
@Html.Partial("_ActivationLink", new UserActivationLinkModel())
</div>
的局部視圖如:
@model Me2Everyone.Web.UI.Models.User.UserForgotPasswordModel
@using (Html.BeginForm("ForgotPassword", "Home", FormMethod.Post, new { id = "personal-form" }))
{
<table width="100%" cellspacing="0" cellpadding="0" border="0" style="padding: 0px 0 20px 0;">
<tbody>
<tr>
<td width="375">
<div class="text-problem">
@Html.EditorFor(model => model.Email)
</div>
</td>
<td width="80" valign="bottom">
<input type="submit" value="Send" />
</td>
</tr>
</tbody>
</table>
}
,第二個是幾乎相同於上述的唯一區別是模型類型和操作方法形式。
在家庭控制器的ForgotPassword動作是:
[HttpPost]
public ActionResult ForgotPassword(UserForgotPasswordModel model)
{
if (ModelState.IsValid)
{
// Search email in database.
if(emailNotFound)
{
model.ErrorMessage = "Email not found.";
}
}
else
{
model.ErrorMessage = "Email address not found.";
}
return PartialView("_ForgotPassword", model);
}
現在,當我張貼的數據服務器,它返回的局部視圖作爲獨立不是在主視圖,所以我看了看周圍的淨和發現我需要發送Ajax調用它,所以我做了它在作爲父視圖:
<script type="text/javascript">
$(function() {
$("form").submit(function() {
if ($(this).valid()) {
var dataToSend = { model: { Email: $("#Email").val() } };
var serializedForm = $(this).serialize();
var isForgotPassword = true;
if ($(this).attr('action').indexOf("ForgotPassword") < 0)
isForgotPassword = false;
$.ajax({
url: $(this).attr('action'),
data: serializedForm,
type: 'POST',
success: function (data, textStatus, request) {
if (isForgotPassword == true)
$("#fPassword").html(data);
else
$("#aLink").html(data);
},
error: function (xhr, ajaxOptions, thrownError)
{
alert('error')
}
});
return false;
}
});
});
並以我父視圖我有:
@if(Model.ErrorMessage != "")
{
<script type="text/javascript">
alert(@Model.ErrorMessage);
</script>
}
問題是,當我給一個有效的電子郵件地址,它工作正常,但是當我提供了亙古不變的電子郵件地址存在於數據庫中,我得到的電子郵件沒有發現報警,但是當我再次點擊提交按鈕,局部視圖將在瀏覽器中獨立創建,而不是在父視圖中。
我試圖改變我的父視圖爲:
<div id="fPassword">
@{Html.RenderAction("ForgotPassword");}
</div>
<div id="aLink">
@{Html.RenderAction("ActivationLink");}
</div>
但還是它不工作,任何想法或幫助?
非常好,非常感謝,先生,您的解決方案效果很好。 – 2013-03-08 14:26:51