Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.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# MVC和jQueryAjax方法中未获取表单数据_C#_Jquery_Ajax_Asp.net Mvc_Form Submit - Fatal编程技术网

C# MVC和jQueryAjax方法中未获取表单数据

C# MVC和jQueryAjax方法中未获取表单数据,c#,jquery,ajax,asp.net-mvc,form-submit,C#,Jquery,Ajax,Asp.net Mvc,Form Submit,我在申请表中显示一份报告。用户具有筛选报告的功能。因此,他们输入过滤数据并点击“Go”按钮。在“Go”上单击我使用jQuery将整个表单传递给控制器操作。我希望根据表单集合中控件的值从数据库中读取数据,并将数据传递回表单,然后需要使用新数据重新加载报表 我尝试了以下代码 .cshtml <script type="text/javascript"> $(document).ready(function () { $('#action_button').click(funct

我在申请表中显示一份报告。用户具有筛选报告的功能。因此,他们输入过滤数据并点击“Go”按钮。在“Go”上单击我使用jQuery将整个表单传递给控制器操作。我希望根据表单集合中控件的值从数据库中读取数据,并将数据传递回表单,然后需要使用新数据重新加载报表

我尝试了以下代码

.cshtml

<script type="text/javascript">

$(document).ready(function () {

   $('#action_button').click(function () {

       //$('#trialReportForm').attr("action", '@Url.Action("ReportFilter", "MyController")');     
      //$('#trialReportForm').submit();    
// While using above two commented lines instead of the below codes, I get the form collection correctly. BUt I cannot pass back the new data to the form. If this is the solution.. How can I pass the data back to form to reload the report?                         



       var formElements = $("#trialReportForm").serialize();

   //var data = { "parameter": $.toJSON(formElements) };

 var data = { "parameter": formElements };


$.ajax({
    url: @Url.Action(ReportFilter", "MyController"),
    type: 'POST',
    data: data,
    dataType: 'json',
    success: OnSuccess,
    error: OnFailure
});


    });


function OnSuccess(result)
{
alert(result);
}

function OnFailure(result)
{
alert(result);
}

});
我也尝试了下面的代码。但是参数是空的

[HttpPost]
    public JsonResult ReportFilter(FormCollection parameter)
    {
        return new DBConnect().GetFilterData(parameter);
     }
我正在接受行动呼叫方法。但这里的参数是以某种序列化形式出现的。但无法反序列化它。如何反序列化它以形成其他形式的集合。? 我所要做的就是获取表单中输入控件的值

我尝试了以下两种反序列化代码。但没有一个工作正常。只有例外

1: var serializer = new JavaScriptSerializer();
     var jsonObject = serializer.Deserialize<FormCollection>(parameter);


 2: var request = JsonConvert.DeserializeObject<FormCollection>(parameter);
1:var serializer=newJavaScriptSerializer();
var jsonObject=serializer.Deserialize(参数);
2:var request=JsonConvert.DeserializeObject(参数);
方法将表单内容序列化为
应用程序/x-www-form-urlencoded
编码。因此,这与从未使用jQuery并直接向服务器提交表单内容完全相同

因此,如果您根本没有使用jQuery->使用此表单将绑定到的视图模型,则应该执行完全相同的操作:

[HttpPost]
public JsonResult ReportFilter(MyViewModel model)
{
    ...
}
并假设
$(“#trialReportForm”).serialize()返回以下内容:

foo=bar&baz=bazinga
以下是模型的外观:

public class MyViewModel
{
    public string Foo { get; set; }
    public string Baz { get; set; }
}
试一试 HTML:

菲切罗插图: 描述: 本地: 在JS中:

函数inserirficheiro(){

在MVC中

    [HttpPost]
    public JsonResult NovoFicheiro(int id, string desc, string local, HttpPostedFileBase FileUpload)
    {
       // See de values....

        return Json(new  { ok = true, message = "", }, JsonRequestBehavior.AllowGet);
    }
    var desc = $("#inserirficheirodescricao").val();
    var local = $("#inserirficheirolocal").val();

    var formData = new FormData();

    var file = document.getElementById("files").files[0];

    formData.append("FileUpload", file);
    formData.append("desc", desc);
    formData.append("local", local);
    formData.append("id","1");

    $.ajax({
        type: "POST",
        url: "@Url.Content("~/gestaoficheiros/NovoFicheiro/")", //+ "?desc=" + desc + "&local=" + local,
        data: formData,
        cache: false,
        dataType: 'json',
        contentType: false,
        processData: false,
        success: function (data) {
            if (data.ok == true) {

            }
            else {

                return;
            }
        },
        error: function (error) {
            if (error.ok == undefined) {
                alert("Sessão Expirou");
                location.href = '@Url.Content("~")';
                return;
            }
            alert("!Erro, resposta do Servidor: " + error.responseText);
        }
    });

}
    [HttpPost]
    public JsonResult NovoFicheiro(int id, string desc, string local, HttpPostedFileBase FileUpload)
    {
       // See de values....

        return Json(new  { ok = true, message = "", }, JsonRequestBehavior.AllowGet);
    }