[asp.net-mvc] cshtml 템플릿에서 함수를 만드는 방법은 무엇입니까?
하나의 cshtml 파일에만 필요한 함수를 만들어야합니다. 내 상황을 ASP.NET 페이지 메서드로 생각할 수 있습니다. ASP.NET 페이지 메서드는 페이지에 구현 된 최소 웹 서비스입니다. 한 페이지로 범위가 지정되어 있기 때문입니다. HTML 도우미 (확장 방법)에 대해 알고 있지만 하나의 cshtml 파일에 함수가 필요합니다. 뷰 내에서 함수 서명을 만드는 방법을 모르겠습니다.
참고 : Razor 템플릿 엔진을 사용하고 있습니다.
답변
@helper Razor 지시문을 사용할 수 있습니다.
@helper WelcomeMessage(string username)
{
<p>Welcome, @username.</p>
}
그런 다음 다음과 같이 호출하십시오.
@WelcomeMessage("John Smith")
답변
왜 cshtml 파일 안에 그 함수를 선언하지 않습니까?
@functions{
public string GetSomeString(){
return string.Empty;
}
}
<h2>index</h2>
@GetSomeString()
답변
메소드가 HTML을 반환 할 필요가 없으며 다른 작업을 수행 해야하는 경우 Razor에서 도우미 메소드 대신 람다를 사용할 수 있습니다
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
Func<int,int,int> Sum = (a, b) => a + b;
}
<h2>Index</h2>
@Sum(3,4)
답변
선언적 면도기 도우미 살펴보기
답변
페이지의 전역 변수에 액세스하려면 다음을 수행하십시오.
@{
ViewData["Title"] = "Home Page";
var LoadingButtons = Model.ToDictionary(person => person, person => false);
string GetLoadingState (string person) => LoadingButtons[person] ? "is-loading" : string.Empty;
}