Incorporate breaking changes from MVC TagBuilder

This commit is contained in:
Ryan Nowak 2015-08-11 09:16:21 -07:00
parent 540bcc7950
commit 17588a4089
3 changed files with 27 additions and 57 deletions

View File

@ -5,39 +5,40 @@ using System.Linq;
using System.Linq.Expressions; using System.Linq.Expressions;
using Microsoft.AspNet.Mvc.Rendering.Expressions; using Microsoft.AspNet.Mvc.Rendering.Expressions;
using Microsoft.AspNet.Routing; using Microsoft.AspNet.Routing;
using Microsoft.AspNet.Html.Abstractions;
namespace Microsoft.AspNet.Mvc.Rendering namespace Microsoft.AspNet.Mvc.Rendering
{ {
public static class AngularExtensions public static class AngularExtensions
{ {
public static HtmlString ngPasswordFor<TModel, TProperty>(this IHtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression) public static IHtmlContent ngPasswordFor<TModel, TProperty>(this IHtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression)
{ {
return html.ngPasswordFor(expression, null); return html.ngPasswordFor(expression, null);
} }
public static HtmlString ngPasswordFor<TModel, TProperty>(this IHtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression, object htmlAttributes) public static IHtmlContent ngPasswordFor<TModel, TProperty>(this IHtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression, object htmlAttributes)
{ {
return html.ngPasswordFor(expression, HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes)); return html.ngPasswordFor(expression, HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes));
} }
public static HtmlString ngPasswordFor<TModel, TProperty>(this IHtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression, IDictionary<string, object> htmlAttributes) public static IHtmlContent ngPasswordFor<TModel, TProperty>(this IHtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression, IDictionary<string, object> htmlAttributes)
{ {
return html.ngTextBoxFor(expression, MergeAttributes( return html.ngTextBoxFor(expression, MergeAttributes(
new RouteValueDictionary { { "type", "password" } }, new RouteValueDictionary { { "type", "password" } },
htmlAttributes)); htmlAttributes));
} }
public static HtmlString ngTextBoxFor<TModel, TProperty>(this IHtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression) public static IHtmlContent ngTextBoxFor<TModel, TProperty>(this IHtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression)
{ {
return html.ngTextBoxFor(expression, new RouteValueDictionary()); return html.ngTextBoxFor(expression, new RouteValueDictionary());
} }
public static HtmlString ngTextBoxFor<TModel, TProperty>(this IHtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression, object htmlAttributes) public static IHtmlContent ngTextBoxFor<TModel, TProperty>(this IHtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression, object htmlAttributes)
{ {
return html.ngTextBoxFor(expression, HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes)); return html.ngTextBoxFor(expression, HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes));
} }
public static HtmlString ngTextBoxFor<TModel, TProperty>(this IHtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression, IDictionary<string, object> htmlAttributes) public static IHtmlContent ngTextBoxFor<TModel, TProperty>(this IHtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression, IDictionary<string, object> htmlAttributes)
{ {
var expressionText = ExpressionHelper.GetExpressionText(expression); var expressionText = ExpressionHelper.GetExpressionText(expression);
var modelExplorer = ExpressionMetadataProvider.FromLambdaExpression(expression, html.ViewData, html.MetadataProvider); var modelExplorer = ExpressionMetadataProvider.FromLambdaExpression(expression, html.ViewData, html.MetadataProvider);
@ -140,27 +141,9 @@ namespace Microsoft.AspNet.Mvc.Rendering
var tag = new TagBuilder("input"); var tag = new TagBuilder("input");
tag.MergeAttributes(MergeAttributes(ngAttributes, htmlAttributes)); tag.MergeAttributes(MergeAttributes(ngAttributes, htmlAttributes));
return tag.ToHtmlString(TagRenderMode.SelfClosing); return tag.ToHtmlContent(TagRenderMode.SelfClosing);
} }
//private static bool IsNumberType(Type type)
//{
// switch (Type.GetTypeCode(type))
// {
// case TypeCode.Int16:
// case TypeCode.Int32:
// case TypeCode.Int64:
// case TypeCode.UInt16:
// case TypeCode.UInt32:
// case TypeCode.UInt64:
// case TypeCode.Decimal:
// case TypeCode.Double:
// case TypeCode.Single:
// return true;
// }
// return false;
//}
private static bool IsNumberType(Type type) private static bool IsNumberType(Type type)
{ {
if (type == typeof(Int16) || if (type == typeof(Int16) ||
@ -207,12 +190,12 @@ namespace Microsoft.AspNet.Mvc.Rendering
return false; return false;
} }
public static HtmlString ngDropDownListFor<TModel, TProperty, TDisplayProperty>(this IHtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> propertyExpression, Expression<Func<TModel, TDisplayProperty>> displayExpression, string source, string nullOption, object htmlAttributes) public static IHtmlContent ngDropDownListFor<TModel, TProperty, TDisplayProperty>(this IHtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> propertyExpression, Expression<Func<TModel, TDisplayProperty>> displayExpression, string source, string nullOption, object htmlAttributes)
{ {
return ngDropDownListFor(html, propertyExpression, displayExpression, source, nullOption, HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes)); return ngDropDownListFor(html, propertyExpression, displayExpression, source, nullOption, HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes));
} }
public static HtmlString ngDropDownListFor<TModel, TProperty, TDisplayProperty>(this IHtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> propertyExpression, Expression<Func<TModel, TDisplayProperty>> displayExpression, string source, string nullOption, IDictionary<string, object> htmlAttributes) public static IHtmlContent ngDropDownListFor<TModel, TProperty, TDisplayProperty>(this IHtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> propertyExpression, Expression<Func<TModel, TDisplayProperty>> displayExpression, string source, string nullOption, IDictionary<string, object> htmlAttributes)
{ {
var propertyExpressionText = ExpressionHelper.GetExpressionText(propertyExpression); var propertyExpressionText = ExpressionHelper.GetExpressionText(propertyExpression);
var displayExpressionText = ExpressionHelper.GetExpressionText(displayExpression); var displayExpressionText = ExpressionHelper.GetExpressionText(displayExpression);
@ -238,7 +221,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
var nullOptionTag = new TagBuilder("option"); var nullOptionTag = new TagBuilder("option");
nullOptionTag.Attributes["value"] = string.Empty; nullOptionTag.Attributes["value"] = string.Empty;
nullOptionTag.SetInnerText(nullOption); nullOptionTag.SetInnerText(nullOption);
tag.InnerHtml = nullOptionTag.ToString(); tag.InnerHtml = nullOptionTag.ToHtmlContent(TagRenderMode.Normal);
} }
var clientValidators = html.GetClientValidationRules(metadata, null); var clientValidators = html.GetClientValidationRules(metadata, null);
@ -250,20 +233,20 @@ namespace Microsoft.AspNet.Mvc.Rendering
tag.MergeAttributes(htmlAttributes, replaceExisting: true); tag.MergeAttributes(htmlAttributes, replaceExisting: true);
return tag.ToHtmlString(TagRenderMode.Normal); return tag.ToHtmlContent(TagRenderMode.Normal);
} }
public static HtmlString ngValidationMessageFor<TModel, TProperty>(this IHtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, string formName) public static IHtmlContent ngValidationMessageFor<TModel, TProperty>(this IHtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, string formName)
{ {
return ngValidationMessageFor(htmlHelper, expression, formName, ((IDictionary<string, object>)new RouteValueDictionary())); return ngValidationMessageFor(htmlHelper, expression, formName, ((IDictionary<string, object>)new RouteValueDictionary()));
} }
public static HtmlString ngValidationMessageFor<TModel, TProperty>(this IHtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, string formName, object htmlAttributes) public static IHtmlContent ngValidationMessageFor<TModel, TProperty>(this IHtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, string formName, object htmlAttributes)
{ {
return ngValidationMessageFor(htmlHelper, expression, formName, HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes)); return ngValidationMessageFor(htmlHelper, expression, formName, HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes));
} }
public static HtmlString ngValidationMessageFor<TModel, TProperty>(this IHtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression, string formName, IDictionary<string, object> htmlAttributes) public static IHtmlContent ngValidationMessageFor<TModel, TProperty>(this IHtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression, string formName, IDictionary<string, object> htmlAttributes)
{ {
var expressionText = ExpressionHelper.GetExpressionText(expression); var expressionText = ExpressionHelper.GetExpressionText(expression);
var metadata = ExpressionMetadataProvider.FromLambdaExpression(expression, html.ViewData, html.MetadataProvider); var metadata = ExpressionMetadataProvider.FromLambdaExpression(expression, html.ViewData, html.MetadataProvider);
@ -309,7 +292,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
tags.Add(tag); tags.Add(tag);
} }
return html.Raw(String.Concat(tags.Select(t => t.ToString()))); return new HtmlString(String.Concat(tags.Select(t => t.ToString())));
} }
public static string ngValidationClassFor<TModel, TProperty>(this IHtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression, string formName, string className) public static string ngValidationClassFor<TModel, TProperty>(this IHtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression, string formName, string className)

View File

@ -1,12 +0,0 @@
using System;
namespace Microsoft.AspNet.Mvc.Rendering
{
public static class GeneralExtensions
{
public static HtmlString Tag(this IHtmlHelper htmlHelper, TagBuilder tagBuilder)
{
return htmlHelper.Raw(tagBuilder.ToString());
}
}
}

View File

@ -1,37 +1,36 @@
using System; using System.Collections.Generic;
using System.Collections.Generic;
using Microsoft.AspNet.Routing; using Microsoft.AspNet.Routing;
using Newtonsoft.Json; using Newtonsoft.Json;
using Microsoft.AspNet.Html.Abstractions;
namespace Microsoft.AspNet.Mvc.Rendering namespace Microsoft.AspNet.Mvc.Rendering
{ {
public static class JsonExtensions public static class JsonExtensions
{ {
public static HtmlString Json<T, TData>(this IHtmlHelper<T> helper, TData data) public static IHtmlContent Json<T, TData>(this IHtmlHelper<T> helper, TData data)
{ {
return Json(helper, data, new RouteValueDictionary()); return Json(helper, data, new RouteValueDictionary());
} }
public static HtmlString Json<T, TData>(this IHtmlHelper<T> helper, TData data, object htmlAttributes) public static IHtmlContent Json<T, TData>(this IHtmlHelper<T> helper, TData data, object htmlAttributes)
{ {
return Json(helper, data, HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes)); return Json(helper, data, HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes));
} }
public static HtmlString Json<T, TData>(this IHtmlHelper<T> helper, TData data, IDictionary<string, object> htmlAttributes) public static IHtmlContent Json<T, TData>(this IHtmlHelper<T> helper, TData data, IDictionary<string, object> htmlAttributes)
{ {
var builder = new TagBuilder("script"); var builder = new TagBuilder("script");
builder.Attributes["type"] = "application/json"; builder.Attributes["type"] = "application/json";
builder.MergeAttributes(htmlAttributes); builder.MergeAttributes(htmlAttributes);
builder.InnerHtml =
(data is JsonString
? data.ToString()
: JsonConvert.SerializeObject(data))
.Replace("<", "\u003C").Replace(">", "\u003E");
return helper.Tag(builder); var innerContent = data is JsonString ? data.ToString() : JsonConvert.SerializeObject(data);
innerContent.Replace("<", "\u003C").Replace(">", "\u003E");
builder.InnerHtml = new HtmlString(innerContent);
return builder.ToHtmlContent(TagRenderMode.Normal);
} }
public static HtmlString InlineData<T>(this IHtmlHelper<T> helper, string actionName, string controllerName) public static IHtmlContent InlineData<T>(this IHtmlHelper<T> helper, string actionName, string controllerName)
{ {
//var result = helper.Action(actionName, controllerName); //var result = helper.Action(actionName, controllerName);
//var urlHelper = new UrlHelper(helper.ViewContext.RequestContext); //var urlHelper = new UrlHelper(helper.ViewContext.RequestContext);