2008-12-13 7 views

Odpowiedz

22

Oczywiście platforma MVC .net obsługuje statyczne treści już dla obrazów/css/js itp. Byłoby tylko kwestią rozszerzenia (routing?) Przekazywania plików .html przez proste do IIS. To w połączeniu z odrobiną przepisywania, by tworzyć ładniejsze adresy URL, powinno załatwić sprawę.

Byłbym jednak bardzo, bardzo ostrożny, aby umożliwić generowanie treści generowanych przez użytkowników w postaci nieprzetworzonych plików HTML, gdy pozostawiasz bardzo szerokie drzwi otwarte. W najlepszym razie skończy się na stronach ludzi pełnych spamu/porno/reklam. W najgorszym razie zapewnisz bramę dla ludzi do przesyłania cross-site scripting hacks i potencjalnie przesyłanie szkodliwych treści w celu uszkodzenia witryny. Może łatwo pobrać istniejący formularz z witryny, zakodować w nim ładunek śmieci i usunąć go ze swojej strony głównej i zepsuć całą masę rzeczy.

Przynajmniej powinieneś parsować przesłaną zawartość, aby zmniejszyć ją do zaledwie jednego bloku zawartości, a następnie owijając ją w swoje własne itd. Byłbym osobiście bardziej skłonny po prostu zapewnić użytkownikom ładną WYSIWYG edytor do edycji pojedynczego bloku treści - każdy edytor warty swojej soli powinien zapewnić sanitację, jakie elementy zawiera/wyklucza. Następnie przechowuj ten fragment zawartości w swojej bazie danych/na dysku i poproś o stronę główną przechodząc przez standardową trasę kontrolera MVC i załaduj tę zawartość.


Edycja - dla poprosić o przykłady powinien być w stanie dodać regułę Ignoruj ​​do routingu - prawdopodobnie będzie już przykłady te już - pęknięcie otworzyć plik global.asax - będzie chciał umieścić w wywołaniu metody routes.IgnoreRoute:

routes.IgnoreRoute("UserPages/{*path}"); 

powinniśmy pozwolić IIS obsługiwać wszystkie żądania yourwebsite.com/UserPages/aUser/homepage.html - można również grać o trochę więcej z dzikimi kartami fragmentów/ograniczenia dla ładniejszych rozwiązań

0

Proponuję utworzyć niestandardowy ViewEngine, który pozwoli używać statycznego znacznika HTML z niestandardowymi tagami, które zostaną zastąpione przez informacje o użytkowniku.

Więc twój widok silnik może zaakceptować coś takiego:

<html> 
    <body> 
     <b><user:FirstName /></b> 
     <b><user:LastName /></b> 
    </body> 
</html> 

i produkować

<html> 
    <body> 
     <b>First Name</b> 
     <b>Last Name</b> 
    </body> 
</html> 

ten zwyczaj znaczników można przechowywać w bazie danych, na przykład. Możesz zajrzeć do niestandardowych implementacji ViewEngine pod numerem MVC Contrib project.

Powiązane problemy