How do I define a method in Razor?

后端 未结 8 671
余生分开走
余生分开走 2020-11-28 05:57

How do I define a method in Razor?

相关标签:
8条回答
  • 2020-11-28 06:07

    You mean inline helper?

    @helper SayHello(string name)
    {
        <div>Hello @name</div>
    }
    
    @SayHello("John")
    
    0 讨论(0)
  • 2020-11-28 06:11

    Leaving alone any debates over when (if ever) it should be done, @functions is how you do it.

    @functions {
    
        // Add code here.
    
    }
    
    0 讨论(0)
  • 2020-11-28 06:12

    MyModelVm.cs

    public class MyModelVm
    {
        public HttpStatusCode StatusCode { get; set; }
    }
    

    Index.cshtml

    @model MyNamespace.MyModelVm
    @functions
    {
        string GetErrorMessage()
        {
            var isNotFound = Model.StatusCode == HttpStatusCode.NotFound;
            string errorMessage;
            if (isNotFound)
            {
                errorMessage = Resources.NotFoundMessage;
            }
            else
            {
                errorMessage = Resources.GeneralErrorMessage
            }
    
            return errorMessage;
        }
    }
    
    <div>
        @GetErrorMessage()
    </div>
    
    0 讨论(0)
  • 2020-11-28 06:14

    It's very simple to define a function inside razor.

    @functions {
    
        public static HtmlString OrderedList(IEnumerable<string> items)
        { }
    }
    

    So you can call a the function anywhere. Like

    @Functions.OrderedList(new[] { "Blue", "Red", "Green" })
    

    However, this same work can be done through helper too. As an example

    @helper OrderedList(IEnumerable<string> items){
        <ol>
            @foreach(var item in items){
                <li>@item</li>
            }
        </ol>
    }
    

    So what is the difference?? According to this previous post both @helpers and @functions do share one thing in common - they make code reuse a possibility within Web Pages. They also share another thing in common - they look the same at first glance, which is what might cause a bit of confusion about their roles. However, they are not the same. In essence, a helper is a reusable snippet of Razor sytnax exposed as a method, and is intended for rendering HTML to the browser, whereas a function is static utility method that can be called from anywhere within your Web Pages application. The return type for a helper is always HelperResult, whereas the return type for a function is whatever you want it to be.

    0 讨论(0)
  • 2020-11-28 06:14

    You can simply declare them as local functions in a razor block (i.e. @{}).

    @{
        int Add(int x, int y)
        {
            return x + y;
        }
    }
    
    <div class="container">
        <p>
            @Add(2, 5)
        </p>
    </div>
    
    0 讨论(0)
  • 2020-11-28 06:15

    You can also just use the @{ } block to create functions:

    @{
        async Task<string> MyAsyncString(string input)
        {
            return Task.FromResult(input);
        }
    }
    

    Then later in your razor page:

       <div>@(await MyAsyncString("weee").ConfigureAwait(false))</div>
    
    0 讨论(0)
提交回复
热议问题