相关疑难解决方法(0)

如何在没有表单的情况下将字符串数组发布到ASP.NET MVC Controller?

我正在创建一个小应用程序来自学ASP.NET MVC和JQuery,其中一个页面是一个项目列表,其中一些可以选择.然后我想按下一个按钮并使用JQuery的Post函数向我的控制器发送一个List(或类似的东西),其中包含所选项目的ID.

我设法得到一个数组,其中包含所选元素的ID,现在我想发布它.我可以这样做的一种方法是在我的页面中有一个虚拟表单,带有隐藏值,然后使用所选项目设置隐藏值,并发布该表单; 不过,这看起来很狡猾.

有没有更简洁的方法来实现这一点,通过将阵列直接发送到控制器?我尝试了一些不同的东西,但看起来控制器无法映射它接收的数据.这是迄今为止的代码:

function generateList(selectedValues) {
   var s = {
      values: selectedValues //selectedValues is an array of string
   };
   $.post("/Home/GenerateList", $.toJSON(s), function() { alert("back") }, "json");
}
Run Code Online (Sandbox Code Playgroud)

然后我的控制器看起来像这样

public ActionResult GenerateList(List<string> values)
{
    //do something
}
Run Code Online (Sandbox Code Playgroud)

我设法获得的只是控制器参数中的"null"...

有小费吗?

asp.net-mvc jquery json

180
推荐指数
6
解决办法
21万
查看次数

将JSON格式DateTime传递给ASP.NET MVC

我们知道MVC以这种格式返回JsonResult的DateTime:,/Date(1240718400000)/我们知道如何在JS中解析它.

但是,似乎MVC不接受以这种方式发送的DateTime参数.例如,我有以下Action.

[HttpGet]
public ViewResult Detail(BookDetail details) { //... }
Run Code Online (Sandbox Code Playgroud)

BookDetail类包含一个名为CreateDate的DateTime字段,我以这种格式从JS传递了一个JSON对象:

{"CreateDate": "/Date(1319144453250)/"}
Run Code Online (Sandbox Code Playgroud)

CreateDate被识别为null.

如果我以这种方式传递JSON,它按预期工作:

{"CreateDate": "2011-10-10"}
Run Code Online (Sandbox Code Playgroud)

问题是我无法以简单的方式更改客户端代码,必须坚持/ Date(1319144453250)/这种格式.我必须在服务器端进行更改.

如何解决这个问题呢?这与ModelBinder有关吗?

非常感谢提前!

asp.net-mvc json

13
推荐指数
1
解决办法
1万
查看次数

将动态json对象传递给C#MVC控制器

我正在使用.Net 4,MVC 3和jQuery v1.5做一些工作

我有一个JSON对象,可以根据调用它的页面进行更改.我想将对象传递给控制器​​.

{ id: 1, title: "Some text", category: "test" }
Run Code Online (Sandbox Code Playgroud)

我明白,如果我创建一个自定义模型,如

[Serializable]
public class myObject
{
    public int id { get; set; }
    public string title { get; set; }
    public string category { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

并在我的控制器中使用它,例如

public void DoSomething(myObject data)
{
    // do something
}
Run Code Online (Sandbox Code Playgroud)

并使用jQuery的.ajax方法传递对象,如下所示:

$.ajax({ 
    type: "POST", 
    url: "/controller/method", 
    myjsonobject,  
    dataType: "json", 
    traditional: true
});
Run Code Online (Sandbox Code Playgroud)

这工作正常,我的JSON对象映射到我的C#对象.我想做的是传递一个可能会改变的JSON对象.当它改变时,我不希望每次JSON对象改变时都要向我的C#模型添加项.

这有可能吗?我尝试将对象映射到Dictionary,但数据的值最终会变为null.

谢谢

jquery json asp.net-mvc-3

12
推荐指数
2
解决办法
3万
查看次数

将JSON传递给MVC 3 Action

我正在尝试将JSON提交给MVC操作.我想要的是获取JSON对象,然后访问它的数据.JSON字段的数量每次都会有所不同,所以我需要一个能够处理所有情况的解决方案.

这是我对我的行动的POST,地址可以有3个字段或20个,每个帖子都会有所不同.

更新:我会详细介绍一下.我正在尝试使用LinkedIn API,我将收到一个JSON,它看起来像本页末尾的JSON:link.我需要创建一个接受这个JSON的Action,它会因人而异.

var address =
    {
        Address: "123 rd",   
        City: "Far Away",
        State: "Over There"           
    };


    $.ajaxSetup({ cache: false });
    $.ajax({
        type: "POST",
        contentType: "application/json; charset=utf-8",
        url: "/Account/GetDetails/",
        data: JSON.stringify(address),
        dataType: "json",
        success: function () {

            alert("Success from JS");
        }
    });
Run Code Online (Sandbox Code Playgroud)

这是我在MVC中的操作,我需要应用于传递任何JSON对象并访问其字段.

 [HttpPost]
    public ActionResult GetDetails(object address)
    {         
        //address object comes in as null            

        @ViewBag.Successs = true;

        return View();

    }
Run Code Online (Sandbox Code Playgroud)

asp.net asp.net-mvc json controller asp.net-mvc-3

8
推荐指数
1
解决办法
1万
查看次数

标签 统计

json ×4

asp.net-mvc ×3

asp.net-mvc-3 ×2

jquery ×2

asp.net ×1

controller ×1