Add `IHtmlGenerator` and its default implementation
- part of #1243 (kind-of) - mostly copied from `HtmlHelper` but refactored to - consistently take a `ViewContext` parameter and return a `TagBuilder` - provide `GenerateActionLink()` and `GenerateRouteLink()` - provide a separate `GenerateHiddenForCheckBox()`, allowing `GenerateCheckBox()` to return a `TagBuilder` - `GenerateForm()`'s `method` parameter is a `string`, not `FormMethod` nits: format document, consistent line wrapping, variable name changes, ...
This commit is contained in:
parent
659e759de2
commit
339c63d143
|
|
@ -42,10 +42,10 @@ namespace Microsoft.AspNet.Mvc
|
||||||
/// This method has a side effect:
|
/// This method has a side effect:
|
||||||
/// A response cookie is set if there is no valid cookie associated with the request.
|
/// A response cookie is set if there is no valid cookie associated with the request.
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
public HtmlString GetHtml([NotNull] HttpContext context)
|
public TagBuilder GetHtml([NotNull] HttpContext context)
|
||||||
{
|
{
|
||||||
var builder = _worker.GetFormInputElement(context);
|
var builder = _worker.GetFormInputElement(context);
|
||||||
return builder.ToHtmlString(TagRenderMode.SelfClosing);
|
return builder;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -189,7 +189,8 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public HtmlString AntiForgeryToken()
|
public HtmlString AntiForgeryToken()
|
||||||
{
|
{
|
||||||
return _antiForgeryInstance.GetHtml(ViewContext.HttpContext);
|
var tagBuilder = _antiForgeryInstance.GetHtml(ViewContext.HttpContext);
|
||||||
|
return tagBuilder.ToHtmlString(TagRenderMode.SelfClosing);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,180 @@
|
||||||
|
// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved.
|
||||||
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Diagnostics.Contracts;
|
||||||
|
using System.Globalization;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Net;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Microsoft.AspNet.Mvc.Core;
|
||||||
|
using Microsoft.AspNet.Mvc.ModelBinding;
|
||||||
|
using Microsoft.AspNet.Mvc.Rendering.Expressions;
|
||||||
|
|
||||||
|
namespace Microsoft.AspNet.Mvc.Rendering
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Contract for a service supporting <see cref="IHtmlHelper"/> and <c>ITagHelper</c> implementations.
|
||||||
|
/// </summary>
|
||||||
|
public interface IHtmlGenerator
|
||||||
|
{
|
||||||
|
string Encode(string value);
|
||||||
|
|
||||||
|
string Encode(object value);
|
||||||
|
|
||||||
|
string FormatValue(object value, string format);
|
||||||
|
|
||||||
|
TagBuilder GenerateActionLink(
|
||||||
|
[NotNull] string linkText,
|
||||||
|
string actionName,
|
||||||
|
string controllerName,
|
||||||
|
string protocol,
|
||||||
|
string hostname,
|
||||||
|
string fragment,
|
||||||
|
object routeValues,
|
||||||
|
object htmlAttributes);
|
||||||
|
|
||||||
|
TagBuilder GenerateAntiForgery([NotNull] ViewContext viewContext);
|
||||||
|
|
||||||
|
TagBuilder GenerateCheckBox(
|
||||||
|
[NotNull] ViewContext viewContext,
|
||||||
|
ModelMetadata metadata,
|
||||||
|
string name,
|
||||||
|
bool? isChecked,
|
||||||
|
object htmlAttributes);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Generate an additional <input type="hidden".../> for checkboxes. This addresses scenarios where
|
||||||
|
/// unchecked checkboxes are not sent in the request. Sending a hidden input makes it possible to know that the
|
||||||
|
/// checkbox was present on the page when the request was submitted.
|
||||||
|
/// </summary>
|
||||||
|
TagBuilder GenerateHiddenForCheckbox(
|
||||||
|
[NotNull] ViewContext viewContext,
|
||||||
|
ModelMetadata metadata,
|
||||||
|
string name);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Renders a <form> start tag to the response. When the user submits the form,
|
||||||
|
/// the request will be processed by an action method.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="actionName">The name of the action method.</param>
|
||||||
|
/// <param name="controllerName">The name of the controller.</param>
|
||||||
|
/// <param name="routeValues">
|
||||||
|
/// An <see cref="object"/> that contains the parameters for a route. The parameters are retrieved through
|
||||||
|
/// reflection by examining the properties of the <see cref="object"/>. This <see cref="object"/> is typically
|
||||||
|
/// created using <see cref="object"/> initializer syntax. Alternatively, an
|
||||||
|
/// <see cref="IDictionary{string, object}"/> instance containing the route parameters.
|
||||||
|
/// </param>
|
||||||
|
/// <param name="method">The HTTP method for processing the form, either GET or POST.</param>
|
||||||
|
/// <param name="htmlAttributes">An <see cref="IDictionary{string, object}"/> instance containing HTML
|
||||||
|
/// attributes to set for the element.</param>
|
||||||
|
/// <returns>
|
||||||
|
/// An <see cref="MvcForm"/> instance which emits the </form> end tag when disposed.
|
||||||
|
/// </returns>
|
||||||
|
/// <remarks>
|
||||||
|
/// In this context, "renders" means the method writes its output using <see cref="ViewContext.Writer"/>.
|
||||||
|
/// </remarks>
|
||||||
|
TagBuilder GenerateForm(
|
||||||
|
[NotNull] ViewContext viewContext,
|
||||||
|
string actionName,
|
||||||
|
string controllerName,
|
||||||
|
object routeValues,
|
||||||
|
string method,
|
||||||
|
object htmlAttributes);
|
||||||
|
|
||||||
|
TagBuilder GenerateHidden(
|
||||||
|
[NotNull] ViewContext viewContext,
|
||||||
|
ModelMetadata metadata,
|
||||||
|
string name,
|
||||||
|
object value,
|
||||||
|
bool useViewData,
|
||||||
|
object htmlAttributes);
|
||||||
|
|
||||||
|
TagBuilder GenerateLabel(
|
||||||
|
[NotNull] ViewContext viewContext,
|
||||||
|
[NotNull] ModelMetadata metadata,
|
||||||
|
string name,
|
||||||
|
string labelText,
|
||||||
|
object htmlAttributes);
|
||||||
|
|
||||||
|
/// <remarks>
|
||||||
|
/// Not used directly in HtmlHelper. Exposed publicly for use in DefaultDisplayTemplates.
|
||||||
|
/// </remarks>
|
||||||
|
TagBuilder GenerateOption(SelectListItem item, string encodedText);
|
||||||
|
|
||||||
|
TagBuilder GeneratePassword(
|
||||||
|
[NotNull] ViewContext viewContext,
|
||||||
|
ModelMetadata metadata,
|
||||||
|
string name,
|
||||||
|
object value,
|
||||||
|
object htmlAttributes);
|
||||||
|
|
||||||
|
TagBuilder GenerateRadioButton(
|
||||||
|
[NotNull] ViewContext viewContext,
|
||||||
|
ModelMetadata metadata,
|
||||||
|
string name,
|
||||||
|
object value,
|
||||||
|
bool? isChecked,
|
||||||
|
object htmlAttributes);
|
||||||
|
|
||||||
|
TagBuilder GenerateRouteLink(
|
||||||
|
[NotNull] string linkText,
|
||||||
|
string routeName,
|
||||||
|
string protocol,
|
||||||
|
string hostName,
|
||||||
|
string fragment,
|
||||||
|
object routeValues,
|
||||||
|
object htmlAttributes);
|
||||||
|
|
||||||
|
TagBuilder GenerateSelect(
|
||||||
|
[NotNull] ViewContext viewContext,
|
||||||
|
ModelMetadata metadata,
|
||||||
|
string optionLabel,
|
||||||
|
string name,
|
||||||
|
IEnumerable<SelectListItem> selectList,
|
||||||
|
bool allowMultiple,
|
||||||
|
object htmlAttributes);
|
||||||
|
|
||||||
|
TagBuilder GenerateTextArea(
|
||||||
|
[NotNull] ViewContext viewContext,
|
||||||
|
ModelMetadata metadata,
|
||||||
|
string name,
|
||||||
|
int rows,
|
||||||
|
int columns,
|
||||||
|
object htmlAttributes);
|
||||||
|
|
||||||
|
TagBuilder GenerateTextBox(
|
||||||
|
[NotNull] ViewContext viewContext,
|
||||||
|
ModelMetadata metadata,
|
||||||
|
string name,
|
||||||
|
object value,
|
||||||
|
string format,
|
||||||
|
object htmlAttributes);
|
||||||
|
|
||||||
|
TagBuilder GenerateValidationMessage(
|
||||||
|
[NotNull] ViewContext viewContext,
|
||||||
|
string name,
|
||||||
|
string message,
|
||||||
|
string tag,
|
||||||
|
object htmlAttributes);
|
||||||
|
|
||||||
|
TagBuilder GenerateValidationSummary(
|
||||||
|
[NotNull] ViewContext viewContext,
|
||||||
|
bool excludePropertyErrors,
|
||||||
|
string message,
|
||||||
|
string headerTag,
|
||||||
|
object htmlAttributes);
|
||||||
|
|
||||||
|
/// <remarks>
|
||||||
|
/// Not used directly in HtmlHelper. Exposed publicly for use in other IHtmlHelper implementations.
|
||||||
|
/// </remarks>
|
||||||
|
IEnumerable<ModelClientValidationRule> GetClientValidationRules(
|
||||||
|
[NotNull] ViewContext viewContext,
|
||||||
|
ModelMetadata metadata,
|
||||||
|
string name);
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue