【问题标题】:Html.DescriptionFor rendering inside the previous <textarea/>Html.Description用于在前面的<textarea/>里面渲染
【发布时间】:2016-10-14 21:19:51
【问题描述】:

我有一个&lt;textarea /&gt;,它在我的视图模型中有一个属性的值。属性如下:

[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>

&lt;textarea data-bind="value: Description"/&gt; 正在使用 KnockoutJS 绑定值。

在我看来,这应该并且会起作用,但由于某种原因它不起作用。 @Html.DescriptionFor(x =&gt; 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 的一部分。
  • &lt;textarea&gt; 不是自闭合标签。你需要&lt;textarea data-bind="value: Description"&gt;&lt;/textarea&gt;
  • 这似乎解决了这个问题。我以为是自闭。谢谢。
  • @haim770 请考虑将其发布为答案,以便 OP 可以接受并且未来的访问者可以轻松发现解决方案。

标签: html asp.net-mvc knockout.js


【解决方案1】:

问题在于&lt;textarea&gt; 不是自闭合标签,因此后面的 HTML 被认为是元素的一部分。

您需要使用以下方法关闭它:

<textarea data-bind="value: Description"></textarea>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-07
    • 1970-01-01
    • 1970-01-01
    • 2014-01-21
    • 1970-01-01
    • 2013-03-15
    • 1970-01-01
    相关资源
    最近更新 更多