我搜索,但找不到任何快速的解决方案,MVC 3 htmlhelper创建一个包装方法。我正在寻找的是像:
@html.createLink("caption","url") { <html> content in tags </html> }
结果应该有
<a href="url" title="Caption"> <html> content in tags </html> </a>
任何帮助这个。
解决方法
使用BeginForm的方式是返回类型MvcForm意味着Idisposable,以便在使用语句中使用时,MvcForm的dispose方法会写出关闭< / form>标签。
这是我刚才写的来演示的。
首先,扩展方法:
public static class ExtensionTest { public static MvcAnchor BeginLink(this HtmlHelper htmlHelper) { var tagBuilder = new TagBuilder("a"); htmlHelper.ViewContext.Writer .Write(tagBuilder.ToString( TagRenderMode.StartTag)); return new MvcAnchor(htmlHelper.ViewContext); } }
这是我们的新类型,MvcAnchor:
public class MvcAnchor : Idisposable { private readonly TextWriter _writer; public MvcAnchor(ViewContext viewContext) { _writer = viewContext.Writer; } public void dispose() { this._writer.Write("</a>"); } }
在你的意见中,你现在可以做:
@{ using (Html.BeginLink()) { @Html.Raw("Hello World") } }
结果如下:
<a>Hello World</a>
稍微扩展以处理您的确切要求:
public static MvcAnchor BeginLink(this HtmlHelper htmlHelper,string href,string title) { var tagBuilder = new TagBuilder("a"); tagBuilder.Attributes.Add("href",href); tagBuilder.Attributes.Add("title",title); htmlHelper.ViewContext.Writer.Write(tagBuilder .ToString(TagRenderMode.StartTag)); return new MvcAnchor(htmlHelper.ViewContext); }
和我们的观点:
@{ using (Html.BeginLink("http://stackoverflow.com","The Worlds Best Q&A site")) { @Html.Raw("StackOverflow - Because we really do care") } }
产生结果:
<a href="http://stackoverflow.com" title="The Worlds Best Q&A site"> StackOverflow - Because we really do care</a>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。