无法通过ajax将数据传递给控制器

时间:2012-01-16 17:54:01

标签: ajax asp.net-mvc-3

我有以下模型类:

[Serializable]
public class SearchHomeModel
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Company { get; set; }
    public string Title { get; set; }
}

我有以下控制器代码:

public ActionResult DataTableUserList(SearchHomeModel search, UserListType type, int iDisplayStart, int iDisplayLength, string sEcho)

以及以下客户部分:

var search = {};
search.FirstName = 'aa';
search.LastName = 'bb';
search.Company = 'kkk';
search.Title = 'aaaawww';

fnServerData: function (sSource, aoData, fnCallback) {
    aoData.push({ "name": "type", "value": "All" });
    aoData.push({ "name": "search", "value": search });
    $.ajax({
        dataType: 'json',
        type: "POST",
        url: sSource,
        data: aoData,

但是我看看服务器端的调试器我看到type =" All" (这是正确的),但搜索为空。为什么以及如何从ajax向搜索对象传递数据?

1 个答案:

答案 0 :(得分:1)

您可能会或可能不会觉得这很有用,但我这样做了所以我可以直接从控制器来回传递JSON。在玩Knockout.js时,我遇到了这种方法HERE

我创建了这个属性

  public class FromJsonAttribute : CustomModelBinderAttribute
{
    private readonly static JavaScriptSerializer serializer = new JavaScriptSerializer();

    public override IModelBinder GetBinder()
    {
        return new JsonModelBinder();
    }

    private class JsonModelBinder : IModelBinder
    {
        public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
        {
            var stringified = controllerContext.HttpContext.Request[bindingContext.ModelName];
            if (string.IsNullOrEmpty(stringified))
                return null;
            return serializer.Deserialize(stringified, bindingContext.ModelType);
        }
    }
}

这是我的控制器代码:

   [HttpPost]
        public ActionResult Gifts([FromJson] List<GiftModel> gifts, [FromJson] string guid)
        {
        }
相关问题