我想采用现有的操作方法,将其返回值呈现给字符串并将其作为JSON发送给AJAX请求的响应。
为此,我需要将ActionResult渲染为字符串。我该怎么做?
我们可以使用this.Content()将字符串转换为ActionResult。
更新
现有和第一个动作方法返回一个ActionResult类型,但它确实返回一个ViewResult来响应HTTP post请求。我有第二个动作方法(我的外观),它返回一个响应AJAX请求的JsonResult。我希望第二个动作方法使用第一个动作方法来呈现HTML。
在宏观方案中,我想要一个ActionResult(从一个动作方法生成),不仅可以通过标准的HTTP帖子检索,还可以通过Facade动作方法(第二个动作方法)通过AJAX请求检索。这样,作为开发人员,我可以选择使用HTTP Post或AJAX来检索页面的呈现。
抱歉,我试图让这个更新尽可能短。感谢。
答案 0 :(得分:6)
你在寻找4号或6号下方吗?
从here提取的文字:
了解行动结果
控制器操作返回称为操作结果的内容。操作结果是控制器操作响应浏览器请求而返回的内容。
ASP.NET MVC框架支持几种类型的操作结果,包括:
所有这些操作结果都继承自ActionResult基类。
答案 1 :(得分:1)
将其作为ContentResult而不是ActionResult
返回我使用类似
的东西 public ContentResult Place(string person, string seat)
{
string jsonString = null;
try
{
jsonString = AllocationLogic.PerformAllocation(person, seat);
}
catch {
jsonString = AllocationLogic.RaiseError(timeout);
}
return Content(jsonString);
}
答案 2 :(得分:1)
您确定JsonResult
不是您想要的吗?如果您调用Json(object jsonObject)
中定义的Controller
方法,它会将jsonObject
序列化为JSON并返回适当的响应(正确设置所有标头以及所有标头)。通常JSON请求需要POST,但您可以将其配置为允许GET。