Làm cách nào để xác định phương thức trong Dao cạo?
Làm cách nào để xác định phương thức trong Dao cạo?
Câu trả lời:
Để lại một mình bất kỳ cuộc tranh luận nào khi (nếu có) nó nên được thực hiện, @fifts là cách bạn làm điều đó.
@functions {
// Add code here.
}
@functions
là một nơi tốt để tổ chức xem mã thế hệ cụ thể . Trường hợp cụ thể: những mẫu máy khách xấu xí đó - từ chuỗi ..
Bạn có nghĩa là người trợ giúp nội tuyến?
@helper SayHello(string name)
{
<div>Hello @name</div>
}
@SayHello("John")
Rất đơn giản để xác định một chức năng bên trong dao cạo.
@functions {
public static HtmlString OrderedList(IEnumerable<string> items)
{ }
}
Vì vậy, bạn có thể gọi một chức năng bất cứ nơi nào. Giống
@Functions.OrderedList(new[] { "Blue", "Red", "Green" })
Tuy nhiên, công việc này cũng có thể được thực hiện thông qua helper
quá. Làm ví dụ
@helper OrderedList(IEnumerable<string> items){
<ol>
@foreach(var item in items){
<li>@item</li>
}
</ol>
}
Vì vậy, sự khác biệt là gì?? Theo bài đăng trước đây, cả @helpers và @fifts đều chia sẻ một điểm chung - họ làm cho mã sử dụng lại một khả năng trong các Trang web. Họ cũng chia sẻ một điểm chung khác - thoạt nhìn họ giống nhau, đó là điều có thể gây ra một chút nhầm lẫn về vai trò của họ. Tuy nhiên, chúng không giống nhau. Về bản chất, một trình trợ giúp là một đoạn mã có thể tái sử dụng của sytnax được hiển thị dưới dạng phương thức và được dùng để hiển thị HTML cho trình duyệt, trong khi đó một chức năng là phương thức tiện ích tĩnh có thể được gọi từ bất kỳ đâu trong ứng dụng Trang web của bạn. Kiểu trả về cho người trợ giúp luôn là HelperResult, trong khi kiểu trả về cho hàm là bất cứ điều gì bạn muốn.
@Functions
tiền tố làm @OrderedList(...)
việc cho tôi trong .netcore.
Bạn cũng có thể làm điều đó với một Func như thế này
@{
var getStyle = new Func<int, int, string>((width, margin) => string.Format("width: {0}px; margin: {1}px;", width, margin));
}
<div style="@getStyle(50, 2)"></div>
Dao cạo chỉ là một động cơ templating.
Bạn nên tạo một lớp học bình thường.
Nếu bạn muốn tạo một phương thức bên trong trang Dao cạo, hãy đặt chúng vào một @functions
khối .
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>