J'ai besoin de lancer mon propre assistant BeginLabel pour Mvc. J'ai vérifié/volé le concept de la source Mvc pour les méthodes html.beginForm/ajax.beginForm.Implémenter .net mvc BeginLabel comme BeginForm response.write issue
public static Label BeginLabel(this HtmlHelper htmlHelper)
{
TagBuilder tagBuilder = new TagBuilder("label");
HttpResponseBase response = htmlHelper.ViewContext.HttpContext.Response;
response.Write(tagBuilder.ToString(TagRenderMode.StartTag));
return new Label(response);
}
Le Étiquette implémente simplement l'interface IDisposable pour permettre la fermeture de l'étiquette:
protected virtual void Dispose(bool disposing)
{
if (!_disposed)
{
_disposed = true;
_httpResponse.Write("</label>");
}
}
Utilisation ressemble à ceci:
@using (Html.BeginLabel())
{
@Html.TextBoxFor(f => f.FirstName)
@Html.ValidationMessageFor(f => f.FirstName)
}
On dirait que je me manque quelque chose comme les étiquettes sont toujours rendues en haut du HTML et bien que cela soit évident pour moi parce que j'écris à la réponse, je ne peux pas voir comment le natif Begin Form() réalise ceci. Quelqu'un peut-il nous éclairer à ce sujet?
On dirait que cela est couvert dans http://stackoverflow.com/questions/2435898/create-extension- method-to-produce-open-closing-tags-like-html-beginform –
On dirait qu'il y a énormément de travail pour un si petit bénéfice. De plus, je ne suis pas sûr de ce que vous obtenez. une étiquette sans texte? En outre, je ne suis pas sûr que vous voulez le message de validation à l'intérieur de l'étiquette, soit sémantiquement parlant. –