【问题标题】:Return View from Asp.Net MVC 4 Web API从 Asp.Net MVC 4 Web API 返回视图
【发布时间】:2012-05-17 17:52:41
【问题描述】:
由于我正在处理Asp.Net MVC 4 Web API,我还需要返回一个特定条件下的视图。我的流程如下:
- 第三方应用程序将调用我的 Web API 方法。 (例如用户身份验证)
- 如果有有效的凭据,我需要将 HTTP 状态返回为 SUCCESS (200)
- 如果用户无效,我需要从同一个 MVC 应用程序返回一个 VIEW(登录视图)来请求凭据。 (在视图中会有一个“注册”链接)
所以重点是,这是否可以通过相同的 WEB API 方法在不同条件下同时返回 LOGIN View (html) 和 WebResponse Status (200)?
提前致谢。
【问题讨论】:
标签:
c#
asp.net
asp.net-mvc
asp.net-mvc-4
【解决方案1】:
你可以做两件事:
- 使用
AuthorizeAttribute,就像在 Jon Galloway 的教程中一样:Getting started with WebAPI
-
将您的响应数据包装在HttpResponseMessage 中,并在需要时重定向用户。例如:
var responseMessage = new HttpResponseMessage<Stock>(null, HttpStatusCode.RedirectMethod);
responseMessage.Headers.Location = new Uri("http://www.mysite.com/login");
return responseMessage;
【解决方案2】:
如果你的方法的返回类型是ActionResult,你应该可以。毕竟,Web API 只是从 Controller 派生的。但更大的问题是:您的客户能否处理同一个问题的不同答案?也许您应该在成功时返回 200,而在“向其他方法询问视图”时返回非 200。