У меня есть действие Index
на контроллере, который ничего не делает.
public EmptyModel Index()
{
return null;
}
В представлении Index
просто отображается некоторый html, а jJuery-управляемый ajax и MasterPage выполняют всю тяжелую работуна этой конкретной странице.Когда я удаляю эту функцию действия из ее контроллера, представление aspx больше не будет отображаться.
Дополнительная информация и обновление:
После внесения изменений, упомянутых в ответе Чада, URL-адрес, который использовалчтобы вернуть индексное представление сейчас, вместо этого возвращается 404. Эта проблема может существовать, потому что большая часть структуры папок представлений выполнена в раннем стиле Fubu Framework (с View_Page_Type_Declarations.cs
и без кода), вместо того, чтобы использовать более интуитивно понятный иболее новые соглашения о папках по умолчанию.Но возможно мой анализ отключен.
Вот мой FubuRegistry:
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 */
}
WebAppUrlPolicy:
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;
}
}
ViewAndActionInDifferentFolders:
public class ViewAndActionInDifferentFolders : IViewsForActionFilter
{
public IEnumerable<IViewToken> Apply(ActionCall call, ViewBag views)
{
if (call.IsForHomeController())
{
var viewTokens = views.ViewsFor(call.OutputType()).Where(x => x.Name == "HomeIndexView");
return new[] { new WebAppViewToken(call, viewTokens, "home") };
}
if (call.IsJsonCall())
{
return new List<IViewToken>();
}
return CreateSingleTokenList(call, views);
}
private static IEnumerable<WebAppViewToken> CreateSingleTokenList(ActionCall call, ViewBag views)
{
return new[] { new WebAppViewToken(call, views.ViewsFor(call.OutputType())) };
}
}
Как перенастроить Fubu, чтобы я мог использовать представление без действия?
Какие изменения необходимо внести, чтобы удалить указанную выше функцию действия и при этом сохранить ту же функциональность?