如果你不想用 WebAPI 重新做所有的事情,你可以实现一些 ActionFilterAttribute 来改变基于一些查询字符串 fi 的 ActionResult 像这样:
public class ResultSwitcherAttribute: ActionFilterAttribute
{
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
if (filterContext.HttpContext.Request["data"] != null && filterContext.HttpContext.Request["data"] == "json")
{
filterContext.Result = new JsonResult
{
Data = (filterContext.Result as ViewResult).Model,
JsonRequestBehavior = JsonRequestBehavior.AllowGet
};
}
}
}
然后,您将在 application_start 或每个控制器/操作中注册它,如下所示:
[ResultSwitcherAttribute]
public class HomeController : Controller
{
public ActionResult Index()
{
return View(new TestModel()
{
Web = "http://www.mywebpage.com", Name = "Yngve"
});
}
}
当您现在使用 ?data=json 访问您的 url 时,您将获得模型的 JSON 表示,而不是视图。
编辑:代码示例更新