Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/340.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# 无模型和Ajax的POST Json_C#_Asp.net_Jquery_Json_Asp.net Mvc 2 - Fatal编程技术网

C# 无模型和Ajax的POST Json

C# 无模型和Ajax的POST Json,c#,asp.net,jquery,json,asp.net-mvc-2,C#,Asp.net,Jquery,Json,Asp.net Mvc 2,现在,我只想使用HTTP POST将json发送到asp.net mvc2控制器 因为JSON实际上是一个JSON对象列表,每个对象都有不同的字段和长度,所以我很难构建一个输入模型 因此,我想知道是否有一种方法可以让我在ASP.NET MVC2中将不带model/ajax的JSON发布到控制器?您可以将JSON存储在隐藏字段中,然后使用实用程序将JSON转换为控制器中的对象。它必须在表格的公布数据内,以便可用;存储在隐藏字段中是一种方法,或者使用AJAX将其流式返回 嗯。基于@Brian的答案,

现在,我只想使用HTTP POST将json发送到asp.net mvc2控制器

因为JSON实际上是一个JSON对象列表,每个对象都有不同的字段和长度,所以我很难构建一个输入模型


因此,我想知道是否有一种方法可以让我在ASP.NET MVC2中将不带model/ajax的JSON发布到控制器?

您可以将JSON存储在隐藏字段中,然后使用实用程序将JSON转换为控制器中的对象。它必须在表格的公布数据内,以便可用;存储在隐藏字段中是一种方法,或者使用AJAX将其流式返回


嗯。

基于@Brian的答案,我们已经做到了这一点。请记住这是Jquery 1.4.2

这是有点突破,可以简化,但它是使用回调,而不是完整的帖子。它最初用于实时过滤结果,并将结果的第一页重新加载回同一区域

首先,我们在页面上有按钮/链接/任何东西。这将调用javascript来构建json数据

<input type="button" alt="Update" onclick="doStuff();" />
JsonRequest需要是一个类对象,所有属性、子类及其属性等等都需要可序列化才能使这种方法工作。尽管返回了一组流动的数据(作为json对象的集合),并且没有实际看到这些数据是什么样子,但我确信您可以设计某种类型的类结构来支持您的数据

function doStuff() {

        var refinements = GetRefinementSelections();
        var profileId = '<%= Model.Profile.ProfileId %>';

        var startDate = $('#SearchbyDateFrom').val();
        var endDate = $('#SearchbyDateTo').val();

        var jsonData = JSON.stringify(
            { 
                "ProfileId" : profileId,
                "RefinementGroups": refinements,
                "StartDate": startDate,
                "EndDate": endDate
            });

            $('#jsonData').val(jsonData);
            $('#update-button').click();
    }
<% using (Ajax.BeginForm("MyAction", "MyController", new { },
       new AjaxOptions { },
       new { id = "filteredResultsForm" }))
   {  %>
    <input type="submit" id="update-button" style="display:none;" />
    <%= Html.Hidden("jsonData")%>
<% } %>
public ActionResult MyAction(string jsonData)
    {
        JsonSerializer serializer = new JsonSerializer();

        StringReader sr = new StringReader(jsonData);
        Newtonsoft.Json.JsonTextReader reader = new JsonTextReader(sr);

        JsonRequest jsonRequest = (JsonRequest)serializer.Deserialize(reader, typeof(JsonRequest));

        //do work with object

        return View();
    }