gpt4 book ai didi

c# - 没有模型和 Ajax 的 POST Json

转载 作者:太空狗 更新时间:2023-10-30 01:26:44 26 4
gpt4 key购买 nike

现在,我只想使用 HTTP POST 将 json 发送到 asp.net mvc2 Controller 。

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

所以我想知道有没有办法让我在 ASP.NET MVC2 中将不带模型/ajax 的 JSON 发布到 Controller ?

最佳答案

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

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

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

<input type="button" alt="Update" onclick="doStuff();" />

然后,我们有 doStuff() 函数。在本例中,refinements 是 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();
}

接下来,我们有一个带有隐藏字段的 ajax 表单,doStuff() 将我们的数据放入其中。这也可以是常规的旧形式。

<% using (Ajax.BeginForm("MyAction", "MyController", new { },
new AjaxOptions { },
new { id = "filteredResultsForm" }))
{ %>
<input type="submit" id="update-button" style="display:none;" />
<%= Html.Hidden("jsonData")%>
<% } %>

因此,在该按钮上调用了点击,这导致对服务器的回调。这是我们在 Controller 中的 Action 。 JsonSerializer 是 Newtonsoft.Json 的一部分

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();
}

JsonRequest 需要是一个类对象,并且所有属性、子类及其属性等等都需要可序列化才能使这种方法起作用。尽管返回了一组流动的数据(作为 json 对象的集合),并且没有真正看到这些数据是什么样子,但我相当确定您可以设计某种类结构来支持您的数据。

关于c# - 没有模型和 Ajax 的 POST Json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4256556/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com