如何在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类对象列表....
答案 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