답변:
@functions 는 언제 ( 어쩌면 ) 언제해야하는지에 대한 논쟁을 떠나는 방법입니다.
@functions {
// Add code here.
}
@functions
뷰 특정 생성 코드 를 구성하기에 좋은 장소 입니다. 적절한 예 : 그 추한 클라이언트 템플릿 -에서 - 문자열 ..
인라인 도우미를 의미합니까?
@helper SayHello(string name)
{
<div>Hello @name</div>
}
@SayHello("John")
면도기 내부에 함수를 정의하는 것은 매우 간단합니다.
@functions {
public static HtmlString OrderedList(IEnumerable<string> items)
{ }
}
어디서나 함수를 호출 할 수 있습니다. 처럼
@Functions.OrderedList(new[] { "Blue", "Red", "Green" })
그러나 이와 동일한 작업을 수행 할 수도 있습니다 helper
. 예로서
@helper OrderedList(IEnumerable<string> items){
<ol>
@foreach(var item in items){
<li>@item</li>
}
</ol>
}
차이점은 무엇입니까 ?? 이 이전에 따르면 글 @helpers와 @functions는 공통점이 한 가지를 공유합니다. 웹 페이지 내에서 코드 재사용이 가능합니다. 그들은 또 다른 공통점을 공유합니다-언뜻보기에 동일하게 보이므로 역할에 약간의 혼란을 초래할 수 있습니다. 그러나 그것들은 동일하지 않습니다. 본질적으로 도우미는 메서드로 노출 된 재사용 가능한 Razor sytnax의 스 니펫이며 HTML을 브라우저에 렌더링하기위한 반면 함수는 웹 페이지 응용 프로그램 내 어디에서나 호출 할 수있는 정적 유틸리티 메서드입니다. 헬퍼의 리턴 유형은 항상 HelperResult 인 반면 함수의 리턴 유형은 원하는 유형입니다.
@Functions
접두사를 생략하여 함수 호출 @OrderedList(...)
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>