我在一个没有做任何事情的控制器上有Index
动作。
public EmptyModel Index()
{
return null;
}
Index
视图只显示一些html,jQuery驱动的ajax和MasterPage在此特定页面上执行所有繁重的工作。当我从它的控制器中删除此动作功能时,将不再显示aspx视图。
在Chad的回答中提到的更改后,现在返回索引视图的url会返回404.这个问题可能存在,因为大多数视图的文件夹结构是在早期的Fubu Framework样式中完成的(使用{{ 1}}并且没有代码隐藏),而不是使用更直观和更新的默认文件夹约定。但是我的分析可能已经结束了。
这是我的FubuRegistry:
View_Page_Type_Declarations.cs
WebAppUrlPolicy:
public WebAppFubuRegistry()
{
IncludeDiagnostics(true);
Services(x => x.SetServiceIfNone<IWebAppSecurityContext, WebAppSecurityContext>());
Applies.ToThisAssembly()
.ToAssemblyContainingType<HomeController>();
Actions
.IncludeClassesSuffixedWithController();
Routes
.UrlPolicy<WebAppUrlPolicy>()
.IgnoreControllerNamespaceEntirely()
.ConstrainToHttpMethod(action => action.Method.Name.StartsWith("Perform"), "POST");
Views
.TryToAttach(x=> x.by<ViewAndActionInDifferentFolders>())
.TryToAttachWithDefaultConventions()
.RegisterActionLessViews(WebFormViewFacility.IsWebFormView,
chain => chain.PartialOnly());
/*Behavior Code */
}
ViewAndActionInDifferentFolders:
public class WebAppUrlPolicy : IUrlPolicy
{
public bool Matches(ActionCall call, IConfigurationObserver log)
{
return true;
}
public IRouteDefinition Build(ActionCall call)
{
if(call.IsForHomeController())
return new RouteDefinition("home");
if(call.IsAnIndexCall())
return new RouteDefinition(call.ControllerPrefix());
var otherRoute = new RouteDefinition(call.ToControllerActionRoute());
return otherRoute;
}
}
如何重新配置Fubu以便我可以在没有操作的情况下使用视图?
需要做哪些更改才能删除上面的操作功能,并且仍然保持相同的功能?
答案 0 :(得分:3)
在您的FubuRegistry中,在“视图”部分中,添加:
.RegisterActionLessViews(WebFormViewFacility.IsWebFormView, chain => chain.PartialOnly());
例如,整个视图部分可能如下所示:
Views
.TryToAttachWithDefaultConventions()
.RegisterActionLessViews(
WebFormViewFacility.IsWebFormView,
chain => chain.PartialOnly());
请注意,ASPX和ASCX都可用于无头视图。如果您只想要ASCX文件,则可以使用WebFormViewFacility.IsWebFormControl
代替。
答案 1 :(得分:2)
适合我:
Views.RegisterActionLessViews(type => type.Name == "StaticView",
chain => chain.Route = new RouteDefinition("StaticView"));