J'ai une action de contrôleur qui renvoie une grande quantité de JavaScript dynamique (est servi une fois au client) et j'ai déjà la compression GZip activée. Une chose que je voudrais faire est de lire le flux de résultat exécuté et d'appliquer une minification JS dessus. Est-il possible de le faire en utilisant un attribut de filtre d'action. Je pense que ma question se résume à - En supposant que mon minifier prend une chaîne de JavaScript est-il un moyen de tirer le résultat exécuté sous la forme d'une chaîne sur View(view).ExecuteResult(ControllerContext)
?Réduire l'attribut de filtre d'action dans ASP.NET MVC
Répondre
Je pense que le compresseur YUI pour .NET fera exactement ce dont vous avez besoin.
http://yuicompressor.codeplex.com/
EDIT: Au-dessus est faux que j'ai mal lu la question. Le code ci-dessous va installer un filtre de réponse vous permettant de manipuler la sortie, dans ce cas il supprime simplement les caractères de nouvelle ligne.
Espérons que cela aide.
[HandleError]
public class HomeController : Controller
{
[Minify]
public ActionResult Index()
{
ViewData["Message"] = "Welcome to ASP.NET MVC!";
return View();
}
}
public class Minify : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
//You can check if the content type is CSS/JS here and prevent the filter running on HTML pages
filterContext.HttpContext.Response.Filter = new MinifyFilter(filterContext.HttpContext.Response.Filter);
base.OnActionExecuting(filterContext);
}
}
public class MinifyFilter : MemoryStream
{
private StringBuilder outputString = new StringBuilder();
private Stream outputStream = null;
public MinifyFilter(Stream outputStream)
{
this.outputStream = outputStream;
}
public override void Write(byte[] buffer, int offset, int count)
{
outputString.Append(Encoding.UTF8.GetString(buffer));
}
public override void Close()
{
//Call the minifier here, your data is in outputString
string result = outputString.ToString().Replace(Environment.NewLine, string.Empty);
byte[] rawResult = Encoding.UTF8.GetBytes(result);
outputStream.Write(rawResult, 0, rawResult.Length);
base.Close();
outputStream.Close();
}
}
Oui, il va effectuer la minification, mais ce n'était pas ma question. En supposant que j'ai un résultat comme 'View()' je veux être en mesure de prendre ce flux et de le convertir en chaîne, minify et l'écrire à un autre résultat (ou directement à la réponse si nécessaire) –
Aah, désolé j'ai mal lu le question. Vous avez besoin d'un filtre de réponse que vous pouvez connecter dans un attribut ActionFilter, similaire à ceci: http://stackoverflow.com/questions/1640909/asp-net-mvc-response-filter-outputcache-attribute – amarsuperstar
Je pense que c'est le cas les mêmes lignes mais je ne pense toujours pas que c'est le même problème. Je suppose que cela pourrait être implémenté en tant que filtre (stream) bien que je ne sois pas sûr à 100% de ce qu'il faut faire. –
- 1. Filtre d'action globale dans ASP.NET MVC
- 2. Filtre ASP.NET MVC action Redirect boucle
- 3. Comment réduire le démarrage de l'application ASP.NET MVC Memory Footprint?
- 4. filtre d'exception personnalisée ne pas être frappé dans asp.net MVC
- 5. MVC Index page et filtre
- 6. ASP.NET MVC (2) Attribut de filtre d'action NormalizeUrl (C#)
- 7. Filtre de réponse asp.net
- 8. ASP.NET MVC: Comment créer ViewData pour un filtre d'exception
- 9. créer le filtre d'autorisation avec le paramètre asp.net mvc
- 10. Exécution du filtre Autoriser et Filtre d'action sur une requête ASP.NET MVC non authentifiée
- 11. Réduire l'état d'une session dans ASP.Net 4.0
- 12. Filtre TextBox ASP.NET
- 13. Filtre Compress + MVC + Yahoo YSlow
- 14. Filtres d'action ASP.NET MVC: La définition de filterContext.Result dans un filtre empêche l'exécution d'autres filtres?
- 15. commutateur de jeu pour déclencher pour la gestion des exceptions filtre personnalisé dans asp.net mvc
- 16. Comment inspecter ModelStateDictionary dans ASP.NET MVC
- 17. Filtre d'action MVC sur l'ensemble de l'application
- 18. Je cherche une technique pour réduire la "répétition du contrôleur" pour l'opération CRUD dans ASP.NET MVC
- 19. éléments enfants dans un filtre ASP.NET LINQ à entités
- 20. Stratégies pour réduire la taille de ViewState dans asp.net
- 21. Puis-je développer/réduire une table dans MVC?
- 22. filtre alphabétique dans jquery datatable
- 23. Redirection vers le contrôleur spécifié et action dans le filtre d'action mvc asp.net
- 24. Questions de routage ASP.NET MVC
- 25. Rediriger la boucle avec le filtre d'action SSL dans ASP.NET MVC
- 26. jqgrid dans asp.net mvc
- 27. FCKEditor dans asp.net-mvc
- 28. ASP.Net DataView clarification du filtre
- 29. Evénements dans Asp.Net MVC
- 30. Localisation dans ASP.NET MVC
Avez-vous considéré minimiser lors de la publication? Vous pouvez le faire en utilisant ms build, c'est celui que nous utilisons http://code.google.com/p/antix-software/wiki/MSBuild –
Il s'agit d'un non aller ces résultats sont en fait des vues SPARK qui sont simplement JavaScript avec intégré C# (localisation, valeurs par défaut, etc.). Ils doivent donc être exécutés dynamiquement et ne peuvent pas être pré-minifiés. Il doit être post-exécuter. –