在我的主页视图中,我有一个局部视图,该视图是一个表,并且在它下面有一个按钮,用于打开用于验证记录的模式。但是,如果没有要验证的记录,我希望刷新表部分视图并显示一条自定义消息,说没有要验证的记录,否则,如果有要验证的记录,请显示模式。后操作由主视图中的Ajax.BeginForm完成。
using (Ajax.BeginForm(actionName: "VerifyLogs", ajaxOptions: new AjaxOptions
{
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "VerifyLogContent",
OnSuccess = "showModal(VerifyLogModal)",
OnFailure = "displayFailure",
LoadingElementId = "LogLoader"
}))
{
@Html.AntiForgeryToken()
<button class="btn btn-default glyphicon glyphicon-ok"
type="submit"> Verify</button>
}
到达控制器时,它将在数据库中搜索所有需要验证的日志。
public VerifyLogs()
{
var notVerifiedList = from v in ctx.LogTable
where v.Verified == false
select v).ToList();
if (notVerifiedList.Count() > 0 )
{
var modelCollection = new VerifyModel
{
DataToVerify= notVerifiedList
};
return PartialView("_VerifyLogModal", modelCollection);
}
var response = new AlertModel(); //custom error message
response.AddInfo("No samples to verify", BSContextualTypes.info);
return RedirectToAction("AllLogs", response);
}
如果列表返回零,那么我希望它不显示模式,而是刷新页面并显示自定义消息。 我找到了this link,并且可以在其中显示一个JavaScript错误对话框的地方工作,但是我真的很想刷新页面并将自定义消息放在页面上,而不是显示对话框。
我真的希望用户不要单击其他对话框。理想情况下,最简单的方法是有条件地选择忽略UpdateTargetId
和OnSuccess
并使用响应重定向到AllLogs。我已经读过Ajax.BeginForm,不可能有条件地选择响应。
也许有更好的方法吗?