Asp.net MVC JsonResult成功消息

时间:2014-05-14 21:20:25

标签: asp.net ajax asp.net-mvc json asp.net-mvc-4

这是我的控制器:

    public JsonResult Success() { return Json(new { Success = true, Message = "Data Added Succefully" }); }
    public JsonResult Error(string message) { return Json(new { Success = false, Message = message }); }

    [HttpPost]
    public JsonResult CreateAjax(TAUX taux)
    {
        if (ModelState.IsValid)
        {
            try
            {
                foreach (short i in taux.SelectItems)
                {
                    taux.CAT_ID = i;
                    db.TAUX.Add(taux);
                    db.SaveChanges();

                }
                return Success();
            }
            catch (Exception err)
            {
                return Error(err.Message);
            }
        }

        ViewBag.CAT_ID = new SelectList(db.CATEGORIE, "CAT_ID", "LIBELLE", taux.CAT_ID);
        ViewBag.C_GARANT = new SelectList(db.GARANTIE, "C_GARANT", "LIB_ABREGE", taux.C_GARANT);

        return Error("The server wasn't able to do something right now.");
    }

这是我的PartialView CreateAjax

@model pfebs0.Models.TAUX
....
@using (Html.BeginForm("CreateAjax", "Taux", FormMethod.Post, new { id = "form" }))
{...}

这是我的观看Index

@model IEnumerable<pfebs0.Models.TAUX>
...
     <script>
         $.ajax({
             url: "/",
             method: "POST",
             data: getMyData(),

             success: function (json) {
                 if (json.Success) {
                     alert("Wow, everything was fine!");
                 } else {
                     alert(json.Message);
                 }
             },

             // This will be trigered whenever your ajax call fails (broken ISP link, etc).
             error: function () {
                 alert("Something went wrong. Maybe the server is offline?");
             }
         });

</script> 
...
       @Html.ActionLink("Ajouter", "Create", "Taux",
                new { id = "btnAdd", @class="btn btn-default"})
</p>
...
    @section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
<script type="text/javascript">
    $(function () {

        $.ajaxSetup({ cache: false });

        $('#btnAdd').click(function () {
            $('.modal-dialog').load(this.href, function () {
                $('#modalDiv').modal({
                    backdrop: 'static',
                    keyboard: true
                }, 'show');
            });
            return false;
        });
    });
....
 </script> }

我在这里尝试做的是在Insertionn之后显示成功警告但是在插入之后我被重定向到新的页面Localhost/Taux/ajaxCreate它向我显示此消息{"Success":true,"Message":"Data Added Succefully"}而不是显示PopUp成功Index页面中的消息。这有什么不对?

1 个答案:

答案 0 :(得分:1)

你应该使用

@using (Ajax.BeginForm(....))
{   }

使用适当的参数。

有关详细信息,请参阅How can I return a JSON result to a Ajax.BeginForm

脚本也可能存在一些问题。 你想做什么:

<script>
     $.ajax({
         url: "/",
         method: "POST",
         data: getMyData(),

<强>更新 好的,这应该有效:

1)使用你原来的

@using (Html.BeginForm

2)将ajax调用放在函数中:

<script type="text/javascript">
    function postData()
    {
         $.ajax({
             url: '@Url.Action("CreateAjax", "Taux")',
             method: "POST",
             data: $('#form').serialize(),

            ....
    }

3)在提交按钮中将type="submit"更改为type="button"并添加:

onclick="postData()"

属性。

4)更改ajax网址:

url: '@Url.Action("CreateAjax", "Taux")',

5)添加更改getMyData函数函数

data: $('#form').serialize(),