【发布时间】:2016-10-14 21:19:51
【问题描述】:
我有一个<textarea />,它在我的视图模型中有一个属性的值。属性如下:
[Display(Name="Description", Description="DescriptionOfDescription", ResourceType=typeof(Resources.Admin))]
public string Description { get; set; }
注意Display 数据属性。这定义了属性的显示名称和描述。有了这个,我应该能够像这样设置我的标记:
<div class="form-horizontal">
<div class="form-group">
@Html.LabelFor(x => x.Description, new { @class="control-label col-md-2" })
<div class="col-md-10">
<textarea data-bind="value: Description" />
@Html.ValidationMessageFor(x => x.Description)
@Html.DescriptionFor(x => x.Description)
</div>
</div>
</div>
<textarea data-bind="value: Description"/> 正在使用 KnockoutJS 绑定值。
在我看来,这应该并且会起作用,但由于某种原因它不起作用。 @Html.DescriptionFor(x => x.Description) 的 HTML 在 textarea 的值内呈现,我觉得这很奇怪。我不知道发生了什么,也不知道为什么会这样。
这是网页的图片:
编辑
Html.DescriptionFor()
public static class MvcHtmlHelpers
{
public static MvcHtmlString DescriptionFor<TModel, TValue>(this HtmlHelper<TModel> self, Expression<Func<TModel, TValue>> expression)
{
var metadata = ModelMetadata.FromLambdaExpression(expression, self.ViewData);
var description = metadata.Description;
return MvcHtmlString.Create(string.Format(@"<p class='help-block'>{0}</p>", self.Encode(description)));
}
public static string DescriptionForRaw<TModel, TValue>(this HtmlHelper<TModel> self, Expression<Func<TModel, TValue>> expression)
{
var metadata = ModelMetadata.FromLambdaExpression(expression, self.ViewData);
var description = metadata.Description;
return description;
}
}
【问题讨论】:
-
什么是
@Html.DescriptionFor()?这不是 MVC 的一部分。 -
<textarea>不是自闭合标签。你需要<textarea data-bind="value: Description"></textarea> -
这似乎解决了这个问题。我以为是自闭。谢谢。
-
@haim770 请考虑将其发布为答案,以便 OP 可以接受并且未来的访问者可以轻松发现解决方案。
标签: html asp.net-mvc knockout.js