Domanda

Il ASP.NET controller MVC metodi di azione sono utilizzati principalmente per la movimentazione di 'business' delle operazioni, ma può essere utilizzato per molto di più.

Ho pensato che sarebbe stato divertente vedere cosa creative, utili le cose che le persone hanno creato azioni che possono essere pratico o utile per gli altri.

Ecco il mio contributo :

File Javascript concatenator - a ridurre il numero di richieste http:

    [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"
        };
    }

Una mappa di un percorso :

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

Fare riferimento ad esso da una pagina master :

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

Essere avvertito, ho impostato una cache di output e, quindi, se si sta modificando il vostro JS e l'aggiornamento della pagina, potrebbe essere necessario disabilitare la cache!

Ho solo bisogno di tornare indietro e capire come gzip è.

* Non si deve usare VaryByParam="None", perché che causa l'intestazione Variano da inviare, che cause del browser per tornare indietro e cercare una nuova versione.Se avete bisogno di cambiare il vostro js contenuto quindi gli utenti sono solo andando ad avere per aspettare 5 minuti per farlo!

È stato utile?

Soluzione

Fa un HTTP Redirect 301 conteggio intelligente?

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;
    }
}

Altri suggerimenti

Visualizzare il risultato con e-mail di conferma:

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);
    }
}

Alcuni dei dettagli di implementazione, sono stati omessi qui, ma non ho potuto usare questo per implementare un RegistrationSuccessResult classe, per esempio, che invia un messaggio e-mail con il testo appropriato dopo una corretta registrazione dell'utente.

Il motivo per cui ho scelto di inviare il messaggio in una sottoclasse ViewResult invece nel metodo di azione è stato quello di rendere più facile per separare il mio test di unità.

Una parziale attuazione di meno, una sintassi css extender

Effettivamente il solo supporto costanti e che cosa hanno chiamato mixins, la fonte sono qui.

In questo post Ho spiegato come si usa in mvc (il post è in italiano, ma basta guardare la fonte):

si può solo guardare qui il risultato

In realtà, non è un ' "azione" metodo, ma una custom controller che implementa un percorso-base implementazione RPC.Esso identifica il contratto e metodo dal percorso-dati e passa la chiamata sul lato server implementazione del servizio.Abbastanza efficiente (e sì, ci sono validi motivi che non sto solo tramite WCF o SAPONE).

Non sono sicuro di come molti di voi sta utilizzando aree, ma un comando XCopy script è abbastanza necessari quando si fanno modifiche di Vista in un'Area.Aree di compilare il progetto del padre, ma solo in compilazione (non su salva) quindi, per mantenere il dev agilità, è necessario eseguire un comando XCopy.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top