使用HtmlHelper获取.cshtml页面属性

时间:2018-07-11 11:40:33

标签: c# razor model-view-controller

如本主题中所述,有什么方法可以在控制器中获取HTML标记的属性?

该问题涉及以下文章: https://www.itorian.com/2012/10/html-helper-for-image-htmlimage.html

(对不起,我之前没有在此处放置链接,我只是认为它是常用的)

是否可以进行以下任何尝试?

  • 第一次尝试

public static MvcHtmlString Image(this HtmlHelper helper, string src, string altText, string height = "")
{
    var builder = new TagBuilder("img");
    height != "" ? builder.MergeAttribute("height", height) : 
    // is there a way to get the size of the <html> tag?
    (helper.ViewDataContainer as WebViewPage).Height;
    return MvcHtmlString.Create(builder.ToString(TagRenderMode.SelfClosing));
}
  • 第二次尝试

.cshtml file:
@{
    Dictionary<string, string> attributes = new Dictionary<string, string>();
    attributes.Add("height", // is it possible to get the height here?
    Html.Image("...", "...", attributes);
}

c# file:
public static MvcHtmlString Image(this HtmlHelper helper, string src, string altText, Dictionary<string, string> attributes)
{
    var builder = new TagBuilder("img");
    builder.MergeAttribute("src", src);
    builder.MergeAttribute("alt", altText);
    foreach (var element in attributes)
        builder.MergeAttribute(element.Key, element.Value);
    return MvcHtmlString.Create(builder.ToString(TagRenderMode.SelfClosing));
}

2 个答案:

答案 0 :(得分:0)

从javascript获取您的值并通过参数发送。

要获取文档的高度,请使用JavascriptjQuery

答案 1 :(得分:0)

请注意,剃须刀是模板引擎。它只是将html代码作为文本处理。在客户端(客户端的浏览器)中,您想要做的事情确实很容易实现,因为存在DOM对象。

我建议在razor中(在服务器中)创建html标签,并通过css文件添加样式(在浏览器中应用),如果您需要一些更复杂的样式控制,请使用JavaScript编写使其在浏览器中应用

例如,使用jQuery,您可以使用$(function() { /* set-up code */ })编写这样的设置脚本。查看其详细信息here