저는 (이제는 WebMatrix 또는 ASP.NET MVC에도 동일하게 적용된다고 생각 하겠지만)의 Razor 뷰 엔진을 지원하는 선언문 Razor Helpers (@helper 구문 사용)을 작성했습니다. 모두 잘 작동합니다. 그러나, 나는 그것들을 조금 더 유연하게 만들고 싶기 때문에 출력물 주위에 '감싸는'HTML 조각을 전달할 수있다.선언적 면도기로 HTML 조각을 (대리인으로) 전달하는 방법은 무엇입니까?
@helper HtmlLink(string url, string text = null, string title = null,
string cssClass = null, bool newWindow = false)
{
if (!String.IsNullOrEmpty(url))
{
System.Web.Mvc.TagBuilder linkTag = new System.Web.Mvc.TagBuilder("a");
linkTag.Attributes.Add("href", url);
linkTag.SetInnerText(text ?? url);
if (!String.IsNullOrEmpty(title))
{
linkTag.Attributes.Add("title", title);
}
if (!String.IsNullOrEmpty(cssClass))
{
linkTag.Attributes.Add("class", cssClass);
}
if (newWindow)
{
linkTag.Attributes.Add("rel", "external");
}
@Html.Raw(linkTag.ToString())
}
}
@LinkHelper.HtmlLink("http://www.google.com/", "Google")
를 호출하면 HTML 출력 <a href="http://www.google.com/">Google</a>
을 생성하는 것입니다 : 예를 들어, 나는 몇 가지 매개 변수에서 HTML 링크를 생성 할 수있는 도우미 (많은 여기 단순화)가 있습니다.
URL이 값을 가진 한 생성 된 하이퍼 링크 HTML을 감싸는 HTML 조각을 선택적으로 전달할 수 있다면 좋을 것입니다. 나는 기본적으로 같은 것을 할 수 있도록하고 싶습니다 :
@LinkHelper.HtmlLink("http://www.google.com/", "Google", @<li>@link</li>)
얻을 출력
<li><a href="http://www.google.com/">Google</a></li>
또는 @LinkHelper.HtmlLink("", "", @<li>@link</li>)
과 전혀 출력을 얻을 수 없습니다.
나는 Phil Haacked의 블로그 Templated Razor Delegates에 대해 읽었지만이 컨텍스트에서 어떻게 사용할 수 있는지에 대해서는 알지 못한다. 실제로 가능하다면. 나는 뭔가를 놓치고 있거나 잘못된 나무를 짖고있는 느낌을 받는다.
귀하는 저의 최초의 SO 게시글 중 하나에 답변 해 주셨습니다. 그래서 정말 도와 드리겠습니다. 슬프게도, 나는 아직 MS-MVC를 손에 들고 다녔지 만 면도기로는 더 적다. 기원합니다. – mikemanne