在ASP.NET MVC中,如何在不使用「控制器」後綴的情況下製作控制器類?我無法在網上找到解決方案。 MSDN文檔說控制器類名稱必須以「控制器」結尾。ASP.NET MVC自定義控制器類
一些專家可以幫我嗎?
謝謝。
傑裏
在ASP.NET MVC中,如何在不使用「控制器」後綴的情況下製作控制器類?我無法在網上找到解決方案。 MSDN文檔說控制器類名稱必須以「控制器」結尾。ASP.NET MVC自定義控制器類
一些專家可以幫我嗎?
謝謝。
傑裏
你必須繼承DefaultControllerFactory
使用自定義控制器工廠和覆蓋GetControllerType
方法。
// instantiate controllers that doesn't have "Controller" suffix.
public class CustomControllerFactory: DefaultControllerFactory
{
protected override Type GetControllerType(System.Web.Routing.RequestContext requestContext, string controllerName)
{
var controllersNs = "MvcApp.Controllers";
return Type.GetType(string.Format("{0}.{1}", controllersNs, controllerName));
}
}
而你必須在Global.asax.cs中註冊這個控制器工廠。
ControllerBuilder.Current.SetControllerFactory(new CustomControllerFactory());
重要:本DefaultControllerFactory
做更多的工作,通過緩存類型和其他的東西來提高性能,你必須尋找到source code以獲得更好的主意。
謝謝大家的答案。我只是好奇看看MVC如何在內部工作。每次我必須確保我的控制器類具有「控制器」後綴。根據答案提供的鏈接,我知道現在如何工作。 – 2012-07-12 17:23:08
爲什麼你想要一個沒有後綴的控制器?這就是框架的工作原理。 – Jesse 2012-07-11 14:19:15
是的,你可以。但像@ jesse我很想知道你爲什麼要這樣做? – devundef 2012-07-11 14:20:32
儘管可以完成,但如果你這樣做的話,它會給你帶來更多的負擔。框架旨在通過遵循設定的計劃來提高生產力。如果你想顯着偏離該計劃,首先使用該框架沒有什麼價值。 – 2012-07-11 15:54:47