2016-06-14 4 views
1

Ich habe eine <textarea />, die den Wert einer Eigenschaft in meinem View-Modell hat. Die Eigenschaft lautet wie folgt:Html.DescriptionFor Rendering innerhalb der vorherigen <textarea/>

[Display(Name="Description", Description="DescriptionOfDescription", ResourceType=typeof(Resources.Admin))] 
public string Description { get; set; } 

Beachten Sie das Datenattribut. Dies definiert den Anzeigenamen und die Beschreibung der Eigenschaft. Damit sollte ich in der Lage sein, meine Markup einzurichten wie so:

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

Die <textarea data-bind="value: Description"/> verwendet KnockoutJS den Wert zu binden.

Meiner Meinung nach sollte und sollte dies funktionieren, aber aus irgendeinem Grund nicht. Die HTML von @Html.DescriptionFor(x => x.Description) wird innerhalb des Wertes der textarea gerendert, die ich sehr eigenartig finde. Ich habe keine Ahnung, was hier vor sich geht und warum es sich so verhält.

Hier ist ein Bild der Webseite. 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

Was 'ist @ Html.DescriptionFor()'? Das gehört nicht zu MVC. –

+0

Aktualisierte Frage – Detilium

+3

'' – haim770

Antwort

2

Das Problem ist, dass <textarea> ist kein selbstschließenden Tag, damit der HTML-Code, danach kommt wird als Teil von das Element.

Sie müssen es schließen ein:

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