【问题标题】:simple confirm popup if some condition met in mvc如果在 mvc 中满足某些条件,则简单的确认弹出窗口
【发布时间】:2015-03-04 14:51:29
【问题描述】:

我有一个隐藏字段的视图

@Html.HiddenFor(model => model.Driver.ID, new { htmlAttributes = new { id = "driver" } })

我有一个控制器,它带有一个我想调用的方法,传递该字段“驱动程序”,但调试时我发现这个方法甚至没有被调用。

public string GetEditWarningMessage(int? driverID)
{
    Driver driver = unitOfWork.DriverRepository.Get().Where(d => d.ID == driverID).FirstOrDefault();
    string message = null;
     if(!driver.Status.Equals("A"))
    {

        message = "This driver is assigned to current or future schedule movements";
    }

    return new JavaScriptSerializer().Serialize(message);
}

最后是javascript,我确定这是问题的根源

$().ready(function () {
    $("#driver").change(function () {
        $.get("../GetEditWarningMessage/" + $(this).val() + '?' + $.now(), function (response) {

            var warning;
            warning = $.parseJSON(response);
        });

        $("form").submit(function () {
            var performEdit = false;

            if (warning != null) {

                performEdit = confirm(warning);

                return performDelete;
            }

        });
    });
});

基本上,如果我从 GetEditWarningMessage() 传递的消息为空,我不希望弹出窗口出现,否则让它弹出并传递警告消息。

非常感谢,谢谢大家

【问题讨论】:

  • 有什么改变隐藏字段的值吗?如果没有,那么“更改”方法根本不会被击中......
  • 不,不是,它只是一个对用户隐藏的静态字段,那么除了“更改”我还能使用什么?

标签: c# jquery model-view-controller


【解决方案1】:

更改以下内容

$.get("../GetEditWarningMessage/" + $(this).val() + '?' + $.now(), function (response) {

        var warning;
        warning = $.parseJSON(response);
    });

到

var warning;
$.get("../GetEditWarningMessage/" + $(this).val() + '?' + $.now(), function (response) {


        warning = $.parseJSON(response);
    });

在您的代码中,变量“警告”仅在 $.get 调用中具有作用域。所以它不能在表单提交调用中使用.. 在 $.get 调用之外声明它可以解决这个问题。

如果隐藏的输入值没有改变,那么您必须在表单提交调用中调用 GetEditWarningMessage。即使是同步 ajax 调用,以便表单提交可以等待警告消息的响应。

【讨论】:

  • 我已经这样做了,它的工作方式像这样 $.get("../GetEditWarningMessage/" + $("#driver").val(), function (response) { ,它调用GetWarningMessage 但传递的参数驱动为空
猜你喜欢
  • 1970-01-01
  • 2020-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-16
  • 2014-07-23
  • 2014-02-03
相关资源
最近更新 更多