Frage

Die Controller-Aktion Methoden ASP.NET MVC sind für den Umgang mit ‚Business‘ Operationen in erster Linie verwendet, aber es kann für viele andere verwendet werden.

Ich dachte, es würde Spaß machen, zu sehen, was kreative, nützliche Dinge, die Menschen Aktionen erstellt haben, dass für andere praktisch oder nützlich sein kann.

Hier ist mein Beitrag:

Datei Verkettungs Javascript - zum Anzahl von HTTP-Anfragen zu reduzieren:

    [OutputCache(Duration = 5 * 60, VaryByParam="")]  // DONT USE "None" here *
    public ContentResult RenderJavascript(){

        StringBuilder js = new StringBuilder();
        StringWriter sw = new StringWriter(js);

        // load all my javascript files
        js.AppendLine(File.ReadAllText(Request.MapPath("~/Scripts/jquery.hoverIntent.minified.js")));
        js.AppendLine(File.ReadAllText(Request.MapPath("~/Scripts/jquery.corner.js")));
        js.AppendLine(File.ReadAllText(Request.MapPath("~/Scripts/rollingrazor.js")));

        return new ContentResult()
        {
            Content = js.ToString(),
            ContentType = "application/x-javascript"
        };
    }

Karte eine Route dorthin:

  // javascript
  routes.MapRoute(
     "js-route",
     "dynamic/js",
     new { controller = "Application", action = "RenderJavascript" }
  );

Siehe es von Ihrer Master-Seite:

    <script type="text/javascript" src="/dynamic/js"></script>

Seien Sie gewarnt, ich habe einen Cache für die Ausgabe festgelegt, so dass, wenn Sie Ihre JS sind zu ändern und die Seite aktualisieren Sie können den Cache deaktivieren möchten!

Ich jsut müssen wieder kommen und herauszufinden, wie es gzip.

* Sie sollten nicht VaryByParam = "None" verwenden, weil das die Vary-Header verursacht, zu senden, die a href <= "https://stackoverflow.com/questions/376851/expire-output-cache-asp- net-mvc # 486072" > bewirkt, dass der Browser zurück zu gehen und für eine neue Version zu überprüfen. Wenn Sie wirklich Ihr js Inhalt ändern müssen dann Ihre Benutzer sind goin zu nur 5 Minuten darauf warten zu müssen!

War es hilfreich?

Lösung

Gibt es eine HTTP 301 Redirect so klug zählen?

public class PermanentRedirectResult : ActionResult
{
    public string Url { get; set; }

    public PermanentRedirectResult(string url)
    {
        if (string.IsNullOrEmpty(url))
        {
            throw new ArgumentException("url is null or empty", "url");
        }
        this.Url = url;
    } 

    public override void ExecuteResult(ControllerContext context)
    {
        if (context == null)
        {
            throw new ArgumentNullException("context");
        }
        context.HttpContext.Response.StatusCode = 301;
        context.HttpContext.Response.RedirectLocation = Url;
    }
}

Andere Tipps

Ansicht Ergebnis mit E-Mail-Bestätigung:

public abstract class ViewResultWithConfirmationEmail: ViewResult
{
    protected readonly string toAddress;

    protected ViewResultWithConfirmationEmail(string toAddress)
    {
        this.toAddress = toAddress;
    }

    protected abstract MailMessage CreateEmail(ControllerContext context);

    protected override void ExecuteResult(ControllerContext context)
    {
        MailMessage message = CreateEmail(context);
        var smtpClient = new SmtpClient();
        smtpClient.Send(message);

        base.ExecuteResult(context);
    }
}

Einige der Implementierungsdetails waren hier weggelassen, aber ich kann diese verwenden, um eine RegistrationSuccessResult Klasse zu implementieren, zum Beispiel, das wäre eine E-Mail-Nachricht mit dem entsprechenden Text nach einer erfolgreichen Benutzer-Registrierung senden.

Der Grund wählte ich die Nachricht in einem subclassed Viewresult statt in der Aktionsmethode selbst leichter zu machen war zu schicken, um meine Unit-Tests zu trennen.

Eine partielle Umsetzung von weniger , ein CSS-Syntax-Extender

Es unterstützt eigentlich nur Konstanten und wie sie heißen Mixins, der Quelle sind hier.

In hier auf das Ergebnis

Eigentlich keine "Action" Methode, sondern eine benutzerdefinierte Controller , die eine Route-base RPC-Implementierung implementiert. Es identifiziert den Auftrag und das Verfahren von der Routendaten und leitet den Anruf an die serverseitige Service-Implementierung. Ziemlich effizient (und ja, es gibt gute Gründe, die ich nicht nur WCF oder SOAP).

Nicht sicher, wie viele von Ihnen verwendete Bereichen, sondern ein XCopy Skript ist ziemlich notwendig, wenn in einem Bereich Ansicht Änderungen vornehmen. Bereiche in das übergeordnete Projekt kompilieren, sondern nur auf der Kompilierung (nicht speichern), so die Entwickler Agilität zu halten, werden Sie eine XCopy ausführen müssen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top