Tôi bị mất một chút khi tạo Trình trợ giúp MVC3. Tôi có helper của tôi mà chỉ cần tạo ra một hàng với một biểu thức được thông qua như là tham số.MVC3 cách sử dụng @<text></text> làm thông số trợ giúp html
Tôi muốn sử dụng HtmlHelper tôi như thế này:
@Html.AddTableFormField(model => model.UserName, @<text>
@Html.EditorFor(m => m.UserName)<span class="warning">Use only letters</span>
</text>)
Đây là HtmlHelper tôi (một số mã không liên quan đã được gỡ bỏ):
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));
}
Tôi thậm chí không thể biên dịch nó, bởi vì các Tham số @<text>...</text>
không hợp lệ cho HtmlHelper vì nó là 'biểu thức lambda' và không thể được chuyển đổi thành Biểu thức>
Bất cứ ai cũng có thể giúp giải quyết nó? Tôi chỉ muốn vượt qua bất kỳ loại @<text></text>
để HtmlHelper của tôi, và nó chỉ biên dịch nó và đặt nó là MvcHtmlString vào trở lại hình thành.
SOLUTION:
tôi thấy gì tôi đang tìm kiếm cho bài viết này: ASP.Net MVC3 - Pass razor markup as a parameter
Loại tham số cho @<text></text>
phải là một Func<object, HtmlHelper>
!
Nhưng làm điều đó tôi sẽ mất lợi thế đánh máy mạnh mẽ khi sử dụng trình trợ giúp html bên trong thông số. Dù sao, nếu tôi sử dụng chuỗi, có cách nào để tôi có thể biên dịch nó trong Trình trợ giúp của tôi không? (Hãy tưởng tượng một chuỗi được tạo thành bởi nội dung của ví dụ về thẻ của tôi) –
IPValverde