我对 Javascript 和 jQuery 很陌生。
我正在关注此线程中提出的代码:Validate JQuery UI modal form inside another form in MVC 4 to create a modal form using the Data Annotations validation。
它可以很好地进行验证,但是当我正确填写表单并尝试保存信息并关闭它时,它会保存,但对话框不会关闭并保持这种状态,直到我刷新页面。
这是我的表单的编码方式:
@using (Ajax.BeginForm(new AjaxOptions { HttpMethod = "POST", UpdateTargetId ="editDialog", OnSuccess = "editSucces" }))
{
@Html.ValidationSummary(true)
<fieldset>
<legend>Editar Usuário</legend>
<div class="display-field">
@Html.EditorFor(model => model.IdUsuario, new { id = "idUsuario"})
</div>
Nome
<div class="editor-field">
@Html.EditorFor(model => model.Nome, new { id = "nomeUsuario"})
<br />
@Html.ValidationMessageFor(model => model.Nome)
</div>
E-mail / Login
<div class="editor-field">
@Html.EditorFor(model => model.Login, new { id = "loginUsuario"})
<br />
@Html.ValidationMessageFor(model => model.Login)
</div>
Senha
<div class="editor-field">
@Html.EditorFor(model => model.Senha, new { id = "senhaUsuario"})
<br />
@Html.ValidationMessageFor(model => model.Senha)
</div>
<p>
<input type="submit" value="Confirmar" />
</p>
</fieldset>
<div>
@Html.ActionLink("Cancelar", "Index")
</div>
}
这是我的控制器动作:
public ActionResult Edit(Usuario usuario, string confsenha)
{
if (usuario.Senha == confsenha)
{
usuario.DataCadastro = DateTime.Now;
if (ModelState.IsValid)
{
db.Entry(usuario).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
if (Request.IsAjaxRequest())
{
return PartialView("_Edit", usuario);
}
return View(usuario);
}
}
这是我的javascript调用:
$(function () {
$('.openDialog').click(function () {
$.ajax({
url: this.href,
type: 'GET',
cache: false,
data: { idUsuario: $('#idUsuario').val() },
success: function (result) {
$('#result').html(result).dialog('open');
}
});
return false;
});
$('#result').dialog({
autoOpen: false,
modal: true,
closeOnEscape: false
});
});
function editSucces(result) {
if (result.value) {
$('#result').dialog('close');
window.location.href = '/usuario/index';
} else {
$('#result').html(result);
}
}
运行它,我看到它永远不会进入这部分 javascript 代码:
if (result.value) {
$('#result').dialog('close');
window.location.href = '/usuario/index';
}
因此,它永远不会进入应该关闭对话框的部分。有谁知道为什么会这样?或者应该传递什么result.value
?
谢谢,如果有人可以提供帮助。