私のアプリケーションには、同じコードを何度も繰り返すUI要素(特にボタン)がたくさんあります。
たとえば、複数のビューで、次のコードで作成された編集ボタンがある場合があります。
@Html.ActionLink("Edit", "Edit", "SomeController", null, new { @class="button large blue" });
ここでの問題は、ラベルとスタイルをハードコーディングしていることです。そのため、ボタンのスタイルまたはラベルを変更する場合は、複数のビューで変更する必要があります。すべてのボタンを追跡する必要があるため、これを行うのは面倒です。
そこで今、私はテンプレートメカニズムを作成することを検討しています。このメカニズムでは、中央の領域にボタンテンプレートを定義し、それを使用したい任意のビューに取り込むことができます。
以下の半現実世界のコードでスケッチしようとした2つのオプションを検討しました。
私の質問は、私はここで正しい軌道に乗っているのかということです。どのオプションがより良いで、どのような理由で?使用を検討できるものはすでにありますか、それとも私が考えていなかった別の方法がありますか?
ご協力いただきありがとうございます。
Web.Configテンプレート
web.configファイルからテンプレート構成を取り込むことができるカスタムクラスを作成します。例えば:
<ui.HtmlTemplates>
<add templateKey="FormCancel" tag="a" class="form-button large black" />
<add templateKey="FormSave" tag="input" type="submit" class="form-button large green" />
</ui.HtmlTemplates>
そして、このような構文でそれらを呼び出すことができます(メソッドシグネチャが考案されています)
@HtmlTemplates.Build("FormCancel", Url.Action("Index", "Home"))
部分ビューテンプレート
必要なテンプレートを使用して、強く型付けされた部分ビューを作成します。
ViewModel
public class UiButtonModel
{
public string Url{ get; set; }
}
部分図
// Assume the file is called "_Button_FormCancel"
@Model path.to.model.directoy.UiButtonModel
<a href="@Model.Url" class="form-button large black">Cancel</a>
使用する
@Html.Partial("_Button_FormCancel", new UiButtonModel(){Url = Url.Action("Index", "Home"));