Można używać BaseModule. Pozwoli Ci to uporządkować swoją aplikację internetową na luźno powiązane jednostki, z powiązanymi elementami w tym samym folderze: moduły, widoki, zasoby statyczne. Osiąga się to poprzez zarejestrowanie przestrzeni nazw modułu (z pominięciem nazwy projektu) jako 1) modulePath, 2) lokalizacji wyszukiwania dla widoków i 3) dozwolonej lokalizacji dla zawartości statycznej.
Jako takie, przechodzisz (powrót) do adresów URL mapujących strukturę folderów projektu. Przedmioty, nad którymi prawdopodobnie będziesz pracować razem, i usuwane razem, żyją razem. Tworzenie linków do rzeczy jest znacznie uproszczone. Więc dla przekierowania, można mieć strukturę folderów
here
|-module.cs
|-there
|-module.cs
oraz w „tutaj” modułu po prostu return Response.AsRedirect("there/");
Aby to działało, moduły powinny dziedziczyć z poniższego BaseModule i nie zmienić domyślnej przestrzeni nazw swoich modułów. Mapuje do folderu.
using Nancy;
using Nancy.Conventions;
using System;
using System.Text.RegularExpressions;
namespace HaciendaTestClient
{
// http://stackoverflow.com/questions/2287636/pass-current-object-type-into-base-constructor-call
public abstract class BaseModule<T> : NancyModule, IConvention
{
// the goal is to provide the folder path from the app root as the module path, to enable relative links to static content.
public BaseModule() : base(typeof(T).Namespace.Substring(typeof(T).Namespace.IndexOf('.')).Replace('.', '/'))
{
}
public void Initialise(NancyConventions conventions)
{
// This is where we register the top level directory containing the module as a root for static content.
var tlf = Regex.Match(typeof(T).Namespace, "(?<=\\.)[^\\.]*", RegexOptions.Singleline).Value;
var conv = StaticContentConventionBuilder.AddDirectory(tlf);
conventions.StaticContentsConventions.Add(conv);
}
public Tuple<bool, string> Validate(NancyConventions conventions)
{
return new Tuple<bool, string>(true, "no problem joe");
}
}
}
Oto mały zrzut ekranu mojego eksploratora rozwiązań, który Cię zainteresuje. Ponieważ wszystko jest wywoływane za pomocą odnośników, wszystko można nazwać "_". Lokalizacja staje się identyfikatorem. I nie jest kruchy. Foldery można przenosić, zmieniać ich nazwy i zagnieżdżać. Zwróć uwagę, że przestrzenie nazw odpowiadają! Skały Nancy.
'powrócić Response.AsRedirect ("/ test/nie");' – Phill
jest to możliwe, aby to zrobić bez podania ścieżki modułu? ("/ test") –
Nie, to niemożliwe. – Phill