2013-12-19 37 views
1

當然,我給了他們一個類,我可以從所有的CSS類風格他們都..但上帝禁止我永遠不需要改變他們的HTML。 ..我的按鈕模板 - C#,剃刀,MVC 5.0

我有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個,其中包括4/8的模板文件,甚至8不同的html元素...然後使用一個函數來調用他們,而不是在我的剃刀視圖...這通常的方法是什麼?

我正在使用@ 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> 

回答

1

我不知道你想要什麼,我仍然可以建議你以下

使用PartialViews

您可以創建自定義按鈕partialViews和使用它們,所以,每當你要改變的東西,你可以改變,在一個位置,這將反映其他地方一樣,即

@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輔助here

+0

延伸的Html聽起來像一個很酷的想法... – Jimmyt1988

+0

命名規範的問題:我看到它提到的文件夾 - Helpers \ LabelHelper.cs,是從你的MVC項目的根目錄還是典型的在模型中找到的?或ViewHelpers? – Jimmyt1988

+1

你可以將它保留在任何地方,無所謂,重要的是你已經在視圖中包含了命名空間(不管它是什麼)。 –