9
는 기본적으로, 나는 HTML 헬퍼 (@Html.MyEditor(m => m.Property)
같은)이이를 생산하려는 :Html.EditorFor() 및 기타 사용자 정의 Html 도우미 내부에서 어떻게 사용합니까?
<div class="editor-label">
@html.LabelFor(m => m.Property)
</div>
<div class="editor-field">
@html.EditorFor(m => m.Property)
@html.ValidationMessageFor(m => m.Property)
</div>
만 문제는 내가 Html.EditorFor()
또는 측면 내 자신의 헬퍼의 다른 확장 메서드에 액세스 할 수없는 것이다. 예 시도 :
@helper Edit(this System.Web.Mvc.HtmlHelper<Spartacus.ViewModels.NewTaskItemModel> html)
{
<div class="editor-label">
@html.LabelFor(m => m.Property)
</div>
<div class="editor-field">
@html.EditorFor(m => m.Property)
@html.ValidationMessageFor(m => m.Property)
</div>
}
내가 또한 확장 메서드 구문을 시도 : 위의 두 시도에서
public static string DatePickerFor<TModel, TProperty>(this HtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression)
{
var sb = new StringBuilder();
sb.AppendLine("<div class=\"editor-label\">");
sb.AppendLine(html.LabelFor(expression));
sb.AppendLine("</div>");
sb.AppendLine("<div class=\"editor-field\">");
sb.AppendLine(html.EditorFor(expression));
sb.AppendLine(html.ValidationMessageFor(expression));
sb.AppendLine("</div>");
return sb.ToString();
}
는 동시에, labelFor, EditorFor 및 ValidationMessageFor는 ("찾을 수 없습니다") 컴파일 오류가 던져.
누구든지이 작업을 수행 할 방법을 알고 있습니까? 미리 감사드립니다!
어쩌면 나는 질문 뒤에 속임수를 얻지 못했지만, 두 번째 경우 (순수한 C#이므로 이가 맞습니까?) IMHO System.Web.Mvc.Html 네임 스페이스를 사용하는 네임 스페이스가 있으면이 이가 작동해야합니다. 확장 메서드는 다양한 정적 확장 클래스 (예 : EditorExtensions)에서이 네임 스페이스에 정의됩니다. –
@Tz_ 그게 전부 야! 나는'System.Web.Mvc'를 가지고 있었지만'System.Web.Mvc.Html'을 가지고 있지 않았습니다. VS2010은 내가 필요로하는 네임 스페이스가 아니라는 것을 알지 못했습니다. 일반적으로 사용하는 문을 자동으로 수정 해 주므로 잘못된 것이 있습니다. 의견 대신 답변을 추가하려면 정답에 대한 크레딧을드립니다. – jrizzo