Porting TextAreaHelper from existing MVC code.
This commit is contained in:
parent
e0592d01af
commit
b899cac4c8
|
|
@ -959,6 +959,50 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
||||||
return tagBuilder.ToHtmlString(TagRenderMode.Normal);
|
return tagBuilder.ToHtmlString(TagRenderMode.Normal);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal static MvcHtmlString TextAreaHelper(HtmlHelper htmlHelper, ModelMetadata modelMetadata, string name, IDictionary<string, object> rowsAndColumns, IDictionary<string, object> htmlAttributes, string innerHtmlPrefix = null)
|
||||||
|
{
|
||||||
|
string fullName = htmlHelper.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(name);
|
||||||
|
if (String.IsNullOrEmpty(fullName))
|
||||||
|
{
|
||||||
|
throw new ArgumentException(MvcResources.Common_NullOrEmpty, "name");
|
||||||
|
}
|
||||||
|
|
||||||
|
TagBuilder tagBuilder = new TagBuilder("textarea");
|
||||||
|
tagBuilder.GenerateId(fullName);
|
||||||
|
tagBuilder.MergeAttributes(htmlAttributes, true);
|
||||||
|
tagBuilder.MergeAttributes(rowsAndColumns, rowsAndColumns != implicitRowsAndColumns); // Only force explicit rows/cols
|
||||||
|
tagBuilder.MergeAttribute("name", fullName, true);
|
||||||
|
|
||||||
|
// If there are any errors for a named field, we add the CSS attribute.
|
||||||
|
ModelState modelState;
|
||||||
|
if (htmlHelper.ViewData.ModelState.TryGetValue(fullName, out modelState) && modelState.Errors.Count > 0)
|
||||||
|
{
|
||||||
|
tagBuilder.AddCssClass(HtmlHelper.ValidationInputCssClassName);
|
||||||
|
}
|
||||||
|
|
||||||
|
tagBuilder.MergeAttributes(htmlHelper.GetUnobtrusiveValidationAttributes(name, modelMetadata));
|
||||||
|
|
||||||
|
string value;
|
||||||
|
if (modelState != null && modelState.Value != null)
|
||||||
|
{
|
||||||
|
value = modelState.Value.AttemptedValue;
|
||||||
|
}
|
||||||
|
else if (modelMetadata.Model != null)
|
||||||
|
{
|
||||||
|
value = modelMetadata.Model.ToString();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
value = String.Empty;
|
||||||
|
}
|
||||||
|
|
||||||
|
// The first newline is always trimmed when a TextArea is rendered, so we add an extra one
|
||||||
|
// in case the value being rendered is something like "\r\nHello".
|
||||||
|
tagBuilder.InnerHtml = (innerHtmlPrefix ?? Environment.NewLine) + HttpUtility.HtmlEncode(value);
|
||||||
|
|
||||||
|
return tagBuilder.ToMvcHtmlString(TagRenderMode.Normal);
|
||||||
|
}
|
||||||
|
|
||||||
protected virtual HtmlString GenerateTextBox(ModelMetadata metadata, string name, object value, string format,
|
protected virtual HtmlString GenerateTextBox(ModelMetadata metadata, string name, object value, string format,
|
||||||
IDictionary<string, object> htmlAttributes)
|
IDictionary<string, object> htmlAttributes)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue