jquery – 使用c#的Ajax请求MVC 4.0

我想通过ajax请求返回记录

C#代码如下:

    [HttpPost]
    public WorkoutsViewModel GetSavedWorkoutTemplate(int WorkoutId)
    {
        return _db.Workouts.Where(w => w.Id == WorkoutId).Select(w => new WorkoutsViewModel
        {
            Tag = w.Tags.FirstOrDefault(),Name = w.Name,MaxEffort = w.MaxEffort,Id = w.Id,Description = w.Description,Compare = w.Compare,Category = w.Category
        }).FirstOrDefault();
    } 

jQuery代码是:

function GetSavedWorkoutTemplate(obj) {      
    $("#Workout").hide();
    var WorkoutId = $(obj).val();
    if (WorkoutId == "") {
        return;
    }
    var dto = { "WorkoutId": WorkoutId };

    $.ajax({
        type: "post",url: "/MemberWorkout/GetSavedWorkoutTemplate",contenttype: "application/json; charset=utf-8",data: dto,success: function (result) {
            debugger;
            $("#Workout").show();
        },error: function (result) {
            alert("Unable to update status.");
        }
    });
}

HTML:

 @Html.DropDownList("ddlWorkout",new SelectList(ViewBag.ddlWorkout,"Id","Name"),"--Select Workout--",new { required = true,onchange = "GetSavedWorkoutTemplate(this);",style = "width:310px" })

在成功函数中我得到的结果是“TheGYM.Web.Models.WorkoutsViewModel”作为字符串而不是模型,请纠正我的错误,我想要返回一个模型.

最佳答案
在C#中,您需要使用Json()来正确地序列化对象.试试这个:

public ActionResult GetSavedWorkoutTemplate(int WorkoutId)
{
    var workout = _db.Workouts.Where(w => w.Id == WorkoutId).Select(w => new WorkoutsViewModel
    {
        Tag = w.Tags.FirstOrDefault(),Category = w.Category
    }).FirstOrDefault());
    return Json(workout);
}

相关文章

1.第一步 设置响应头 header('Access-Control-Allow...
$.inArray()方法介绍 $.inArray()函数用于在数组中搜索指定的...
jquery.serializejson.min.js的妙用 关于这个jquery.seriali...
JS 将form表单数据快速转化为object对象(json对象) jaymou...
jQuery插件之jquery.spinner数字智能增减插件 参考地址:http...