Blazor中的@ {} @code {}和@function {}有什么区别?

时间:2019-10-08 00:30:59

标签: asp.net-core .net-core blazor

我正在学习服务器端。开拓者。

我已经阅读了一些项目的代码,并发现了一些使用的代码:

@{
}

和一些使用的东西:

@code{
}

和其他使用:

@function{
}

标记代码块。

我想知道两者之间的区别。谢谢。

2 个答案:

答案 0 :(得分:5)

@用于指令

@code{ } [2]应该被使用。 @function{ } [3]在使用方法的情况下仍然有效,在当前版本中不建议使用。

[2] https://docs.microsoft.com/vi-vn/aspnet/core/mvc/views/razor?view=aspnetcore-3.0#code

[3] https://docs.microsoft.com/vi-vn/aspnet/core/mvc/views/razor?view=aspnetcore-3.0#functions

查看所有案例的文档https://docs.microsoft.com/vi-vn/aspnet/core/mvc/views/razor?view=aspnetcore-3.0#functions

答案 1 :(得分:0)

@{ }

您不能在@{} 下使用functionset get 属性,而只能使用声明。例如:

@{
    DateTime today = DateTime.Now;
}

但是下面的代码会显示错误,因为我在这里使用了函数

@{
    public DateTime GetDate()
    {
        return DateTime.Now;
    }
}

@代码{ }

您可以在 @code {} 下编写任何 C# 代码,例如:

@code{
    [Parameter]
    public Guid id { get; set; }

    AccessoryDto accessory;
    protected override Task OnInitializedAsync()
    {
        if (id == Guid.Empty)
            accessory = new AccessoryDto();
        else
            accessory = GetAccessory(id);
        return Task.FromResult(accessory);
    }

    void cancel()
    {
        NavigationManager.NavigateTo("/accessories");
    }
}

@函数{ }

@function 与@code 做同样的事情,但现在@code推荐使用。

除此之外,您还可以使用@符号来使用条件、循环等。例如:

@if (id == null)
{
    <h1>Create</h1>
}
else
{
    <h1>Edit</h1>
}

<tbody>
    @foreach (var accessory in Accessories)
    {
    <tr>
        <td>@accessory.Name</td>
        <td>@accessory.Description</td>
        <td>
            <a href='/editaccessory/@accessory.Id'>Edit</a>  |
            <a href='/delete/@accessory.Id'>Delete</a>
        </td>
    </tr>
    }
</tbody>

此外,您可以@()进行表达。例如:

<a href="@($"employee/{employeeId}")">View</a>