【问题标题】:MVC and JQuery: Best practice for retrieving form dataMVC 和 JQuery:检索表单数据的最佳实践
【发布时间】:2009-10-07 05:56:59
【问题描述】:

我有一些使用 Ajax 将信息发送回我的控制器进行处理的 JQuery

我是这样做的:

//Define my controls
<%=Html.TextBox("PName", Model.PName, new { id = "pName" })%> ... 
....
....

//Get the values from my controls
var param1= $("#pName").val();
....
....

    //Define the return URL. Is this how to send info back?
    var url = '<%= Url.Content("~/Port/SaveRowAjax") %>/?ID=' + id
                + "&param1=" + param1
                + "&param2=" + param2
                + "&param3=" + param3
                + "&param4=" + param4
                + "&param5=" + param5;

    $.ajax({
        url: url,
        success: function(html) {
            alert("Success!");
        },
    });

   //My c# code, that processes the request
    public void SaveRowAjax(string param1 ....)
    {
        ...
    }

这是使用 MVC 的最佳方式吗?
当我构建 URL 以发回服务器时,它似乎有点混乱

【问题讨论】:

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


    【解决方案1】:

    尝试使用SerializeArray 提交您的表单项。它会将它们的所有值装箱到一个 JSON 对象中。

    var link = "/Port/SaveRowAjax";
    var formData = $(":input").serializeArray();
    $.post(link,formData);
    

    【讨论】:

    【解决方案2】:

    你可以尝试在 jQuery 中使用这样的语法

    $.post(link, {param1: param1, param2: param2 });
    

    【讨论】:

      【解决方案3】:

      对我有用的方法是这样的:

      jQuery.ajax({
              url: '@Url.Action("SaveRowAjax", "Port")',
              type: 'POST',
              contentType: 'application/json',
              data: JSON.stringify({ param1: param1, param2: param2, param3: param3 }),
              success: function (result) { }
          });
      

      【讨论】:

        【解决方案4】:

        有几种方法可以做到这一点。我更喜欢这里列出的方法:

        http://weblogs.asp.net/mikebosch/archive/2008/02/15/asp-net-mvc-submitting-ajax-form-with-jquery.aspx

        是的,它基于旧版本的 MVC,但该技术的真正优势在于使用 jQuery(没有改变)。

        该技术的一个限制是它不适用于文件上传,但是,有一个 jQuery 插件用于执行支持文件上传的 ajax 表单帖子(我认为是通过隐藏的 iframe)。

        编辑: 我认为使用这种技术的最佳理由是,如果用户禁用了 javascript,表单仍然可以工作。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-12-24
          • 1970-01-01
          • 2010-11-16
          • 2017-01-22
          • 2012-02-05
          • 1970-01-01
          • 2013-04-13
          • 2011-02-04
          相关资源
          最近更新 更多