通过ajax mvc从jquery对话框获取数据

时间:2015-04-25 22:42:24

标签: javascript jquery ajax asp.net-mvc

做了很多搜索,我不确定为什么这不起作用。我有一个jquery对话框,我在其中显示局部视图。当我将数据传回控制器时,它会显示一个空白模型。

控制器:

    public ActionResult AddIngredient()
    {
        return PartialView();
    }

    public JsonResult AddIngredientJson(Ingredient model)
    {
        Ingredient newIngredient = model;

        return Json(null);
    }

部分视图:

     <form id="AddIngredientForm" class="AddIngredientForm">
         <div class="logincontent">
              <label>Name:</label>
              @Html.TextBoxFor(x => x.Name, new { @class = "logintextbox" })
         </div>
         <div class="logincontent">
              <label>Category:</label>
              @Html.EnumDropDownListFor(x => x.Category, new { @class = "logintextbox" })
         </div>
     </form>

脚本:

$(document).ready(function () {
    function addIngredient() {
        $.ajax({
            url: "AddIngredientJson",
            Data: $('#AddIngredientForm').serialize(),
            Type: "POST"
        });
    }

    $(function () {
        $('#modalDialog').dialog({
            autoOpen: false,
            width: 400,
            resizable: false,
            modal: true,
            buttons: {
                "Save": function () {
                    addIngredient();
                },
                Cancel: function () {
                    $(this).dialog("close");
                }
            }
        });


        $('#openDialog').click(function () {
            $('#modalDialog').load("@Url.Action("AddIngredient")", function () {
                $(this).dialog('open');
            });
            return false;
        });

    });
});

我已尝试将数据硬编码到脚本中,但也无法通过。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

javascript区分大小写,因此在对象属性上使用wordcase时需要更加小心

$.ajax({
    url: "AddIngredientJson",
    Data: $('#AddIngredientForm').serialize(),
    Type: "POST"
});

应该是

$.ajax({
    url: "AddIngredientJson",
    data: $('#AddIngredientForm').serialize(),
    type: "POST"
});

在没有成功和错误处理程序的情况下使用ajax也不是一个好主意。您的请求可能会失败,用户永远不会知道