Jestem trochę zagubiony przy tworzeniu pomocnika MVC3. Mam mojego pomocnika, który po prostu tworzy wiersz z wyrażeniem przekazanym jako parametr.MVC3 jak używać @<text></text> jako parametr helpera html
chcę używać mojego HtmlHelper tak:
@Html.AddTableFormField(model => model.UserName, @<text>
@Html.EditorFor(m => m.UserName)<span class="warning">Use only letters</span>
</text>)
To moje HtmlHelper (niektóre nieistotne kod został usunięty):
public static MvcHtmlString AddTableFormField<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> property, Expression<Func<TModel>> customFormat = null)
{
var metadata = ModelMetadata.FromLambdaExpression(property, htmlHelper.ViewData);
string displayName = metadata.DisplayName;
var propName = metadata.PropertyName;
if (string.IsNullOrWhiteSpace(displayName))
displayName = propName;
MvcHtmlString htmlCustomFormat = null;
if (customFormat != null)
{
var deleg = customFormat.Compile();
htmlCustomFormat = new MvcHtmlString(deleg().ToString());
}
else
htmlCustomFormat = htmlHelper.EditorFor(property);
return new MvcHtmlString(string.Format("<tr>"+
"<td class=\"form-label\">"+
"<label class=\"editor-label\" for=\"{0}\">{1}<label>"+
"</td>"+
"<td class=\"form-data\">"+
"{2}"+
"</td>"+
"</tr>",
propName, displayName, htmlCustomFormat));
}
nawet nie mogę go skompilować, bo @<text>...</text>
Parametr jest nieprawidłowy dla znacznika HtmlHelper, ponieważ jest to "wyrażenie lambda" i nie można go przekonwertować na wyrażenie>
Ktoś może pomóc rozwiązać ten problem? Po prostu chcę przekazać dowolny rodzaj @<text></text>
do mojego HtmlHelper, a on po prostu skompiluje go i wstawi MvcHtmlString do formowanego zwrotu.
ROZWIĄZANIE:
znalazłem to, czego szukałem w tym poście: ASP.Net MVC3 - Pass razor markup as a parameter
Parametr typu dla @<text></text>
musi być Func<object, HtmlHelper>
!
Ale w ten sposób utracę silnie wypróbowaną przewagę używania pomocników html wewnątrz parametru. W każdym razie, jeśli używam napisu, czy istnieje sposób, który mogę skompilować w moim Helper? (Wyobraź sobie łańcuch utworzony przez treść moich tagów) –
IPValverde