我有一个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;
}
但是当我调试它时,参数每次都会得到一个空值。我试着创建类型字符串的参数,但它是相同的。你能帮帮我吗?
答案 0 :(得分:1)
您只是传递JavaScript对象,因此您可以使用 JSON.stringify 并将Model作为Action参数。
MVC Model Binder会将其转换为您的模型。
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>