【发布时间】:2015-06-21 17:31:57
【问题描述】:
我正在使用 MVC 控制器在 Web Api 项目中创建动态 JavaScript 文件(我对此部分不满意,但我正在尝试保持与以前版本的兼容性)...
客户端正在使用如下 URL:
~/api/assessments/{id:int}.js?locale={locale?}
我创建了一个 MVC JavaScriptController 并添加了这样的方法:
[Route("~/api/data/{id:int}.js")]
public async Task<PartialViewResult> GetData(int id, string locale)
{
try
{
Response.ContentType = "application/javascript";
ViewBag.Locale = locale ?? "en";
var model = await this._dataService.GetData(id.ToString());
return PartialView(model);
}
catch (Exception ex)
{
this._logger.Error("Task<PartialViewResult> GetData(int, string)", ex);
return PartialView("JavaScriptError", SelectException(ex));
}
}
但是,当我尝试调用此调用时,我得到了 404:
<Error>
<Message>
No HTTP resource was found that matches the request URI 'http://.../api/data/29.js?locale=en'.
</Message>
<MessageDetail>
No type was found that matches the controller named 'data'.
</MessageDetail>
</Error>
我认为 WebApi "~/api" 前缀正在踩着 MVC 5 路线,尽管我认为它可能是完全不同的东西。如何在指定的 URL 处呈现此 MVC 视图?
【问题讨论】:
-
Route属性的命名空间是什么? -
我没有指定一个。
-
确保它是
System.Web.Http.RouteAttribute而不是System.Web.Mvc.RouteAttribute。 -
@haim770,这似乎没有什么不同。
标签: c# asp.net-mvc asp.net-mvc-routing asp.net-web-api-routing attributerouting