如何在asp.net MVC中使用ajax

时间:2014-09-16 10:11:56

标签: asp.net-mvc-3 asp.net-ajax json.net

如何在asp.net MVC中从Ajax返回一个类对象.... ???

示例:

来自html的Ajax调用:

$.ajax({ 
            type: 'POST',
            url: '/Tutorial/Web/AlignmentRule/GetAlignmentDetails', 
            data: { alignmentRuleId: alignmentRuleId },
            success:
                function (data) {
                    alert(data.Id);
                        alert(data.alignmentData.Id);
                        $("#ruleName").val(data.alignmentData.Name);
                        $("#level").val(data.alignmentData.Id);
                },
            error:
                function () {
                    alert("Server Error!!!!");
                },
            dataType: 'JSON',
            async: false
        });
控制器中的

和Action方法是:

public virtual JsonResult GetAlignmentDetails(int alignmentRuleId)
    {
        var alignmentData = _allignmentRuleRepository.GetAlignmentById(alignmentRuleId);
        return Json( alignmentData );
    }

我想返回一个alignmentRule类对象列表....

2 个答案:

答案 0 :(得分:0)

您可以根据需要编写返回对象,例如,创建一个ViewModel作为装饰器来保存您想要传递的所有内容,例如:

var json = new JsonViewModel() {
               alignmentData = alignmentData,
               rules = yourRules
           };

return Json(json);

答案 1 :(得分:0)

抛出错误是因为默认情况下MVC框架不允许您使用JSON响应HTTP GET请求(出于安全原因)。 为了使其有效,当您在操作中重新启动Json时,需要指定JsonRequestBehavior.AllowGet

[HttpPost]
public virtual JsonResult GetAlignmentDetails(int alignmentRuleId)
    {
        var alignmentData = _allignmentRuleRepository.GetAlignmentById(alignmentRuleId);
        return Json( alignmentData, JsonRequestBehavior.AllowGet);
    }

编辑

使用[HttpPost]属性注释您的操作。

有关此主题的进一步调查,请查看此article