Je créerais un dossier séparé (comme "DynamicContent" ou autre) pour y placer ces pages dynamiques et j'ajouterais les informations correspondantes. IgnoreRoute
à la méthode RegisterRoutes dans Global.asax.cs, comme ceci :
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("DynamicContent/{*pathInfo}");
...
}
Ensuite, les utilisateurs pourront accéder à ces pages à l'aide d'URL tels que
http://%your_site%/DynamicContent/%path_to_specific_file%
MISE À JOUR
Si vous ne souhaitez pas placer de fichiers sur le disque dur du serveur, vous pouvez créer un contrôleur spécial pour ces fichiers. La route à suivre pour cela devrait ressembler à ceci :
public static void RegisterRoutes(RouteCollection routes)
{
...
routes.MapRoute(
"DynamicRoute", // Route name
"Dynamic/{*pathInfo}", // URL with parameters
new { controller = "Dynamic", action = "Index"} // Parameter defaults
);
}
Votre DynamicController.cs devrait ressembler à ceci :
public class DynamicController : Controller
{
public ActionResult Index(string pathInfo)
{
// use pathInfo value to get content from DB
...
// then
return new ContentResult { Content = "%HTML/JS/Anything content from database as string here%", ContentType = "%Content type either from database or inferred from file extension%"}
// or (for images, document files etc.)
return new FileContentResult(%file content from DB as byte[]%, "%filename to show to client user%");
}
}
Notez que l'astérisque (*) devant pathInfo fera en sorte que cette route prenne toute la partie de l'URL après Dynamic
- Ainsi, si vous avez saisi http://%your_site%/Dynamic/path/to/file/something.html puis une chaîne entière path/to/file/something.html
sera passé en paramètre pathInfo
à la méthode DynamicController/Index.