在尝试将重复记录添加到数据库时弹出

时间:2013-06-25 03:34:57

标签: c# jquery ajax asp.net-mvc

当用户试图输入已存在于数据库中的记录时,我是否可以显示弹出窗口? 现在,当用户提交数据库中已存在的数据时,用户将被重定向到索引视图。 这是当前的代码:

[HttpPost]
public ActionResult Create(Product product)
{
    if (ModelState.IsValid)
    {
        if(DQL.DuplicateCheck(product))
        {
            // This is what I want to change
            return RedirectToAction("Index");
        }
        else
        {
            db.Product.Add(product);
            db.SaveChanges();
            TempData["product_model"] = product;
            return RedirectToAction("Product", "Success");

        }

    }

    return View(product);
}

我现在搜索了一段时间,但没有发现任何合适的东西。任何帮助都非常感谢:)

1 个答案:

答案 0 :(得分:0)

使用jquery ui对话框可以实现此目的。添加TempData标志以进行复制检查,并使用jQuery在视图中执行相同操作并显示弹出窗口。

 [HttpPost]
    public ActionResult Create(Product product)
    {
        TempData["Duplicate"] = null;
        if (ModelState.IsValid)
        {
            if(DQL.DuplicateCheck(product))
            {
                TempData["Duplicate"] = "Yes";
            }
            else
            {
                db.Product.Add(product);
                db.SaveChanges();
                TempData["product_model"] = product;
                return RedirectToAction("Product", "Success");

            }

        }

        return View(product);
    }

Create.cshtml或CreateView

<div id="dialog-message" title="Message">
        <p id="validMessage">
        </p>
    </div>

$(function () {

 $("#dialog-message").dialog({
        modal: true,
        autoOpen: false,
        resizable: false,
        width: 400,
        buttons: { Ok: function () {
            $(this).dialog('close');
        }
        }
    });
   var isDuplicate = '@TempData["Duplicate"]';
   if(isDuplicate == 'Yes')
   {
     $("#validMessage").html("Duplicate record found");
     $("#dialog-message").dialog('open');
   }
}