有条件地从Ajax.BeginForm显示模式视图或刷新部分视图(更好的方法?)

时间:2019-07-19 22:48:06

标签: javascript jquery ajax asp.net-mvc-5

在我的主页视图中,我有一个局部视图,该视图是一个表,并且在它下面有一个按钮,用于打开用于验证记录的模式。但是,如果没有要验证的记录,我希望刷新表部分视图并显示一条自定义消息,说没有要验证的记录,否则,如果有要验证的记录,请显示模式。后操作由主视图中的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错误对话框的地方工作,但是我真的很想刷新页面并将自定义消息放在页面上,而不是显示对话框。

我真的希望用户不要单击其他对话框。理想情况下,最简单的方法是有条件地选择忽略UpdateTargetIdOnSuccess并使用响应重定向到AllLogs。我已经读过Ajax.BeginForm,不可能有条件地选择响应。

也许有更好的方法吗?

0 个答案:

没有答案