Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用jQueryAjax和MVC3发布表单的正确方法是什么?_C#_Jquery_Asp.net_Asp.net Mvc 3 - Fatal编程技术网

C# 使用jQueryAjax和MVC3发布表单的正确方法是什么?

C# 使用jQueryAjax和MVC3发布表单的正确方法是什么?,c#,jquery,asp.net,asp.net-mvc-3,C#,Jquery,Asp.net,Asp.net Mvc 3,我已经看到了一些方法如何做到这一点。除了一个部分外,我自己喜欢的方法如下: 劫持提交表单事件 收集数据并构建一个json对象 var objToSend = { Property : $('#propertyField').val(), Property2 : ... }; 这是我不喜欢的部分,因为像这样收集25个值很乏味 调用$.ajax({})并指定指向某个启用了[HttpPost]的操作的url 在success:ajax查询的一部分中,收集返回的数据(以字符串形式返回)并在适当的地方写

我已经看到了一些方法如何做到这一点。除了一个部分外,我自己喜欢的方法如下:

  • 劫持提交表单事件
  • 收集数据并构建一个
    json
    对象

    var objToSend = { Property : $('#propertyField').val(), Property2 : ... };
    
    这是我不喜欢的部分,因为像这样收集25个值很乏味

  • 调用
    $.ajax({})
    并指定指向某个启用了
    [HttpPost]
    的操作的url

  • 在success:ajax查询的一部分中,收集返回的数据(以字符串形式返回)并在适当的地方写出。我在这里也处理错误,检查第一个单词是否是“Error:”,然后采取适当的措施
  • 除了收集阶段,我喜欢这种方法。我确信有更好的方法可以做到这一点,但我还是一头扎进了
    jquery
    ,来自
    ASP.NET
    WebForms背景,所以整个“拥抱web”部分对我来说完全陌生

    可以使用该方法避免逐个传递所有字段。它将使用
    application/x-www-form-urlencoded
    内容类型将整个表单数据发送到服务器,就像提交标准表单一样:

    $('#myform').submit(function() {
        $.ajax({
            url: this.action,
            type: this.method,
            data: $(this).serialize(),
            success: function(result) {
                // TODO: handle the success case
            }     
        });
        return false;
    });
    
    另一种可能性是:

    有些人发现使用帮助程序渲染表单也很有用:

    @using (Ajax.BeginForm(new AjaxOptions { OnSuccess = "success" }))
    {
        ... some input fields
    }
    
    在ASP.NET MVC 3中,您需要包括
    jquery.unobtrusive ajax.js
    脚本,该脚本以不受干扰的方式将ajax助手发出的HTML5
    data-*
    属性ajax化。

    您可以使用该方法避免逐个传递所有字段。它将使用
    application/x-www-form-urlencoded
    内容类型将整个表单数据发送到服务器,就像提交标准表单一样:

    $('#myform').submit(function() {
        $.ajax({
            url: this.action,
            type: this.method,
            data: $(this).serialize(),
            success: function(result) {
                // TODO: handle the success case
            }     
        });
        return false;
    });
    
    另一种可能性是:

    有些人发现使用帮助程序渲染表单也很有用:

    @using (Ajax.BeginForm(new AjaxOptions { OnSuccess = "success" }))
    {
        ... some input fields
    }
    
    在ASP.NET MVC 3中,您需要包含
    jquery.unobtrusive ajax.js
    脚本,该脚本以不显眼的方式ajax化ajax助手发出的HTML5
    data-*
    属性。

    我就是这样做的

    如果您正在处理表单,您还可以选择使用MVC帮助程序为您创建邮政编码处理代码,例如:

    <% using (html.BeginForm()) {%>
    
        // html for the form
    
    
        <input type='submit' value='post' />
    
    <% } %>
    
    
    //表单的html
    
    从WebForms到MVC的转换可能是一个棘手的问题,因为人们已经知道,你真的在处理web编程的原始方面,即http、html和javascript。。。顺便说一句,我相信这是一件好事,因为我不喜欢WebForms的伪单进程事件模型

    MVC万岁!:)

    我就是这么做的

    如果您正在处理表单,您还可以选择使用MVC帮助程序为您创建邮政编码处理代码,例如:

    <% using (html.BeginForm()) {%>
    
        // html for the form
    
    
        <input type='submit' value='post' />
    
    <% } %>
    
    
    //表单的html
    
    从WebForms到MVC的转换可能是一个棘手的问题,因为人们已经知道,你真的在处理web编程的原始方面,即http、html和javascript。。。顺便说一句,我相信这是一件好事,因为我不喜欢WebForms的伪单进程事件模型


    MVC万岁!:)

    允许jQuery为您构建json。您可以序列化表单,该表单将创建供您提交的数据集

    $.post("myUrl", 
           $("form").serialize(), 
           function(callback) { ... } 
         );
    

    允许jQuery为您构建json。您可以序列化表单,该表单将创建供您提交的数据集

    $.post("myUrl", 
           $("form").serialize(), 
           function(callback) { ... } 
         );
    
    我倾向于使用“jQuery表单插件”。它允许您轻松地将标准表单抽象为AJAX表单:

    它还允许您轻松捕获各种事件、故障条件、验证等,并可以根据需要将表单转换为JSON请求或XML。也处理文件上传。

    我倾向于使用“jQuery表单插件”。它允许您轻松地将标准表单抽象为AJAX表单:


    它还允许您轻松捕获各种事件、故障条件、验证等,并可以根据需要将表单转换为JSON请求或XML。也处理文件上载。

    我将如何在控制器操作中处理.serialize创建的对象?它是否将输入ID、名称和set作为对象中输入字段值的名称?@Phil,与您提交任何标准表单的方式相同:您将定义一个视图模型,其中包含映射到输入字段的属性,并让POST controller操作将此视图模型作为参数。默认模型绑定器将负责正确填充它。我将如何在控制器操作中处理.serialize创建的对象?它是否将输入ID、名称和set作为对象中输入字段值的名称?@Phil,与您提交任何标准表单的方式相同:您将定义一个视图模型,其中包含映射到输入字段的属性,并让POST controller操作将此视图模型作为参数。默认模型绑定器将负责正确填充它。