2016-06-14 52 views
1

我有一個<textarea />具有我的視圖模型中的屬性值。物業如下:Html.DescriptionFor以前的渲染<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的值的範圍內,我發現它非常奇特。我不知道發生了什麼,爲什麼它的行爲如此。

這是網頁的圖像。 enter image description here

EDIT

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; 
    } 
} 
+0

什麼是'@ Html.DescriptionFor()'?這不是MVC的一部分。 –

+0

更新的問題 – Detilium

+3

'' – haim770

回答

2

的問題是,<textarea>不是自閉合標籤,因此HTML附帶事後被認爲是部分元素。

您需要使用來關閉它:

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