ContentResult vs. string

后端 未结 6 1398
-上瘾入骨i
-上瘾入骨i 2020-12-29 01:37

I recently was asked why to use ContentResult instead of returning string. Unfortunately I could not give a better answer than: \"It is best practi

相关标签:
6条回答
  • 2020-12-29 02:15

    Two main advantages:

    • You can specify the content encoding via the ContentEncoding property
    • You can specify the content type (ie, 'text/html') via the ContentType property

    Also, if you want to be OO-clean about it, ContentResult, along with all ActionResult derived classes follow the Command Pattern by providing an ExecuteResult command for the MVC pipeline to run.

    UPDATE: 19-Nov-2020 The original Command Pattern link (dead link) was no longer working so I updated it to reference a similar Microsoft document. Also, to see a great explanation on the Command Pattern, view this link.

    0 讨论(0)
  • 2020-12-29 02:15

    One another difference is Content result can return different content's result. Like string, Html, JavaScript result etc.

    But string return only the string result.

    0 讨论(0)
  • 2020-12-29 02:25

    Returning a ContentResult helps protect your application.

    E.g If your application allows input from users, a malicious user might try to parse a javascript text. This will prevent javascript from executing in your application

    0 讨论(0)
  • 2020-12-29 02:30

    If you return something other than an ActionResult the default behavior is to create a ContentResult wrapping the result of calling ToString() on whatever you did return (or EmptyResult if you returned null). Reasons I can think of to explicitly return ContentResult:

    • It reinforces the fact that the method is an action, rather than a regular method, so devs are less likely to make mistakes like casually renaming it.
    • If in the future you need to specify the content-type you won't need to change the method signature.
    • It doesn't hide the ToString() call. This doesn't matter if you're returning string, but returning a complex type could have unexpected results.
    0 讨论(0)
  • 2020-12-29 02:35

    You can't return a string on a method which returns an ActionResult, so this is when you could use a ContentResult to return a plain string like so:

    public ContentResult Hello()
    {
        return Content("hello world!");
    }
    

    ContentResult by default returns a type of text/plain. If you only ever needed to return a string, then you would use the method to return a string

    0 讨论(0)
  • 2020-12-29 02:35

    One difference as i know is :

    Content return result without quotations marks if you want.

    String return result in Quotations marks all the time.

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