在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
asp.net mvc和asp.net webfrom有个非常显著的特点就是前者去掉了所有的服务器控件,原来拉控件的好日子没有了,取代的是客户端控件。我们可以有两种方式创建这些客户端控件: 第一:在View中手写html控件。优点是非常直观,缺点是增加代码量。 第二:在View中利用System.Web.Mvc.Html下的HtmlHelper的完成大部分控件的客户端输出。 HtmlHelper的功能:先看下它的源码大致结构。
namespace System.Web.Mvc.Html
{ public static class FormExtensions//表单相关扩展方法,例如创建表单标签等。 public static class InputExtensions//这里包含了所有input,例如:text,button,readiobutton等等。 public static class LinkExtensions//链接相关方法 public class MvcForm : IDisposable//与客户端控件无关 public static class RenderPartialExtensions//这是输出PartialView public static class SelectExtensions//输出下拉框 public static class TextAreaExtensions//输出多行文本框 public static class ValidationExtensions//输出相关表单元素验证。 }
<% using (Html.BeginForm())
{%> <fieldset> <p> <label for="Title"> 标题:</label> <%= Html.TextBox("sTitle", Model.sTitle)%> </p> <p> <label for="EventDate"> 内容:</label> <%=Html.TextBox("sContent", Model.sContent)%> </p> <p> <input type="submit" onclick ="return check();" value="Save" /> </p> </fieldset> <% } %> 扩展Helper,我们可以利用TagBuilder,它能输出所有标签及属性。TagBuilder提供下如下重要方法:
// Methods
public TagBuilder(string tagName); public void AddCssClass(string value);//增加样式 public void GenerateId(string name);//设置控件ID private string GetAttributesString(); public void MergeAttribute(string key, string value);//设置属性值 public void MergeAttribute(string key, string value, bool replaceExisting); public void MergeAttributes<TKey, TValue>(IDictionary<TKey, TValue> attributes); public void MergeAttributes<TKey, TValue>(IDictionary<TKey, TValue> attributes, bool replaceExisting); public void SetInnerText(string innerText);//设置显示文本 public override string ToString(); public string ToString(TagRenderMode renderMode);//输出控件html
public static class ImageHelper
{ public static string Image(this HtmlHelper helper, string id, string url, string alternateText) { return Image(helper, id, url, alternateText, null); } public static string Image(this HtmlHelper helper, string id, string url, string alternateText, object htmlAttributes) { // 创建IMG标签 var builder = new TagBuilder("img"); // 增加ID属性 builder.GenerateId(id); // 增加属性 builder.MergeAttribute("src", url); builder.MergeAttribute("alt", alternateText); builder.MergeAttributes(new RouteValueDictionary(htmlAttributes)); // 输出完整的img标签 return builder.ToString(TagRenderMode.SelfClosing); } }
<%= Html.Image("img1", "http://a.lakequincy.com/img/633820582974214892.jpg", "这是一张图片", new
{border="4px"})%> |
请发表评论