让 Controller 从其BaseController
继承路由是否“合法”?好像是not allowed for Attribute Routing,但是如何通过RouteCollection
进行常规路由注册呢?
原因是我目前有一堆 Controller ,每个 Controller 代表某种文件转换器。他们每个人都有一套通用的方法来上传要转换的文件。这些方法不仅是私有(private)方法,而且是每个 Controller 上的端点。我希望以下路线有效:
/api/controller1/uploadfile
/api/controller2/uploadfile
/api/controller3/uploadfile
我能否举个例子,说明如何在BaseController内完成此操作,如果无法执行,请选择一个替代方法。
最佳答案
这是有效的方法:
public abstract class BaseUploaderController : ApiController
{
[HttpGet, Route("uploadfile")] //Needs both because HttpGet("uploadfile") currently only supported in MVC attribute routing
public string UploadFile()
{
return "UploadFile";
}
}
[RoutePrefix("api/values")]
public class ValuesController : BaseUploaderController
{
[Route("{id:int}")]
public string Get(int id)
{
return "value";
}
}