What clever things have you done with an ASP.NET MVC Action method

后端 未结 5 1755
借酒劲吻你
借酒劲吻你 2020-12-12 11:59

The ASP.NET MVC controller action methods are primarily used for handling \'business\' operations but it can be used for lots more.

I thought it would be fun to see

相关标签:
5条回答
  • 2020-12-12 12:46

    View result with email confirmation:

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

    Some of the implementation details have been omitted here, but I could use this to implement a RegistrationSuccessResult class, for example, that would send an email message with the appropriate text after a successful user registration.

    The reason I chose to send the message in a subclassed ViewResult instead of in the action method itself was to make it easier to separate my unit tests.

    0 讨论(0)
  • 2020-12-12 12:50

    A partial implementation of less, a css syntax extender

    It actually support only constants and what they called mixins, the source are here.

    In this post I explained how to use it in mvc (the post is in italian but just look at the source):

    you can just look here at the result

    0 讨论(0)
  • 2020-12-12 12:57

    Does a HTTP 301 Redirect count as clever?

    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;
        }
    }
    
    0 讨论(0)
  • 2020-12-12 12:57

    Not sure how many of you are using areas but an XCopy script is pretty necessary when making View changes in an Area. Areas compile into the parent project but only on compile (not on save) so to keep the dev agility, you'll need to run an XCopy.

    0 讨论(0)
  • 2020-12-12 12:59

    Actually, not an "action" method, but a custom controller that implements a route-base RPC implementation. It identifies the contract and method from the route-data and passes the call onto the server-side service implementation. Pretty efficient (and yes, there are valid reasons that I'm not just using WCF or SOAP).

    0 讨论(0)
提交回复
热议问题