【发布时间】:2023-04-01 20:43:01
【问题描述】:
所以我在视图中有一个按钮,可以打开一个模态弹出表单。这个模态弹出表单是一个部分页面。我的问题是:
每当我没有填写表单上的必填字段时,TryUpdate 检查显然会失败,但它只会刷新 jquery 上“window.location.reload”行的整个页面。我想要做的是,它不会刷新,而是保持原样(显示模式的页面),并且验证摘要或验证会显示,这个和那个是必需的。这是可能的还是我把事情复杂化了?
<script type="text/javascript">
$(document).ready(function () {
$(function () {
$('#modal-link').click(function () {
var href = this.href;
$('#load-modal').dialog({
modal: true,
draggable: false,
position: "top",
open: function (event, ui) {
$(this).load(href, function (result) {
$('#new-academy-form').submit(function () {
$.ajax({
url: this.action,
type: this.method,
data: $(this).serialize(),
success: function (json) {
window.location.reload(true);
},
error: function (data) {
var errmessage = '<div class="error-repo">Error</div>';
$('#messages').html(errmessage);
}
});
return false;
});
});
}
});
return false;
});
});
});
</script>
这是按钮:
<div class="width3">
<%: Html.ActionLink("Submit New", "Create", "Propose", null, new { @class = "results", id = "modal-link" })%>
</div>
这是动作:
public ActionResult Create()
{
return PartialView(Propose.LoadDetails(context, null));
}
[HttpPost]
public ActionResult Create(FormCollection formCollection)
{
Propose propose= new Propose ();
if(TryUpdateModel(propose, "Propose ")){
context.Propoe.Add(propose);
context.SaveChanges();
var proposals = new System.Text.StringBuilder();
return Json(new { propose= proposals});
}
return PartialView(Propose.LoadDetails(context, null));
}
【问题讨论】:
-
您可以从您的操作中返回一个状态代码,让您确定是否应该重新加载整个页面。 jQuery AJAX 错误回调只有在发生实际错误时才会被触发。或者,您可以返回指示错误的 HTTP 状态代码,如下所示:stackoverflow.com/q/4707755/453277
-
所以你真的不能再使用通常的
助手了吗?在那个部分页面上?
标签: asp.net-mvc asp.net-mvc-3 jquery