【问题标题】:A template for my buttons - C#, Razor, MVC 5.0我的按钮模板 - C#、Razor、MVC 5.0
【发布时间】:2014-01-08 02:35:14
【问题描述】:

当然,我已经给了他们一个类,我可以只从那个 css 类中设置它们的样式。但是上帝保佑我永远需要更改它们的 html...

我有 4 个按钮:

Create/Edit/Delete/View

目前他们是这样的:

<button class="btn btn-primary">Create</button>
<button class="btn btn-warning">Edit</button>
<button class="btn btn-success">View</button>
<button class="btn btn-danger">Delete</button>

我想我想要 4 个模板文件,甚至 8 个包含 4/8 不同 html 元素的模板文件......然后在我的 Razor 视图中使用一个函数来调用它们......通常的方法是什么?

我正在使用@Html.ActionLink 等...但我不想为此设置默认模板,因为它需要它是什么...但可能类似于 @Html.PostButton / @Html.ActionButton

PostButton 实际上是<button class="btn btn-primary">Create</button> ,ActionButton 是这样的模板:

<a href="Something/Create"><button class="btn btn-primary">Create</button></a>

【问题讨论】:

    标签: c# razor visual-studio-2013 asp.net-mvc-5


    【解决方案1】:

    我不确定你想要什么,但我仍然可以建议你关注

    使用部分视图

    您可以为您的自定义按钮创建部分视图并使用它们,这样每当您需要更改某些内容时,您可以在一个位置进行更改,它会反映在其他任何地方,即

    @Html.Partial("_PrimaryButton")
    @{ Html.RenderPartial("_AlertButton");  }
    

    使用 HtmlHelpers

    (推荐)。您实际上可以将自定义扩展添加到@Html,即类似于@Html.MyPrimaryButton("Name","OnClickEvent","Anything")

    创建 HtmlHelper 扩展与任何典型的 c# 扩展完全相同,即

    1. 创建静态类
    2. 为其添加一个静态方法并将其第一个参数设为您要扩展的类(在本例中为 HtmlHelper),前缀为 this
    3. 确保在视图中包含命名空间,您希望使用扩展,即

      @using MyNamespace;
      

    所以一个典型的例子可以是:

    public static class MyExtensions
    {
    
        public static string MyButton(this HtmlHelper helper, string name, 
                                  string actionName, string controllerName)
        {
            return @"<a href='/" + controllerName + "/" + actionName +
                     "' class='btn' >" +  name + "</a>";
        }     
    }
    

    阅读更多关于 MVC 自定义 Html Helpers here

    【讨论】:

    • 命名约定问题:我看到它提到了文件夹 - Helpers\LabelHelper.cs,是来自 MVC 项目的根目录还是在模型中找到它?还是 ViewHelpers?
    • 你可以把它放在任何地方,没关系,重要的是你在视图中包含了命名空间(不管它是什么)。
    • 此外,您可以在 Views 本身上声明您的 HtmlHelpers
    • 使用 TagBuilder 类有什么好处吗?还是对于不懂 html 和 css 的人来说?例如:TagBuilder anchorTag = new TagBuilder("a"); anchorTag.AddCssClass("btn");
    猜你喜欢
    • 2013-06-10
    • 2016-07-20
    • 1970-01-01
    • 2017-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-02
    • 2019-02-19
    相关资源
    最近更新 更多