【问题标题】:How to send javascript dictionary to controller method in MVC4如何将javascript字典发送到MVC4中的控制器方法
【发布时间】:2015-03-10 10:25:46
【问题描述】:

我有一个 js 文件,它必须将字典对象发送到服务器。我的 javascript 部分如下所示:

$.ajax({
            url: "/ControllerName/ActionName",
            type: 'post',
            dataType: 'json',
            data: myData
        });

其中 myData 类似于

this myData["favouritePet"] = "dog", myData["favouriteBook"] = "What?"

在控制器中我有这个:

[HttpPost]
public virtual ActionResult ActionName ( Dictionary<string, string> jsonFormattedData)
{


    return null;
}

但是当我调试它时,参数每次都会得到一个空值。我试图制作字符串类型的参数,但它是相同的。你能帮我解决这个问题吗?

【问题讨论】:

标签: c# ajax json model-view-controller controller


【解决方案1】:

您只是传递 JavaScript 对象,因此您可以使用 JSON.stringify 并将 Model 作为 Action 参数。

MVC 模型绑定器会将其转换为您的模型。

public class MyDataModel
{
    public string FavouritePet { get; set; }
    public string FavouriteBook { get; set; }
}

// GET: Home
public ActionResult Index()
{
    return View();
}

[HttpPost]
public ActionResult Index(MyDataModel myData)
{
    return View();
}

<button id="btnSubmit" type="button">Submit</button>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script>
    $("#btnSubmit").click(function () {
        var myData = new Object();
        myData.favouritePet = "dog";
        myData.favouriteBook = "What?";

        $.ajax({
            url: '@Url.Action("Index", "Home")',
            type: 'POST',
            dataType: 'json',
            data: JSON.stringify(myData),
            contentType: "application/json; charset=utf-8",
            success: function (){}
        });
    });
</script>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-16
    • 2012-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多