Anda bisa meletakkan _ViewStart.cshtml
file di dalam /Views/Public
folder yang akan menimpa file default di /Views
folder dan menentukan tata letak yang diinginkan:
@{
Layout = "~/Views/Shared/_PublicLayout.cshtml";
}
Secara analogi Anda bisa meletakkan _ViewStart.cshtml
file lain di dalam /Views/Staff
folder dengan:
@{
Layout = "~/Views/Shared/_StaffLayout.cshtml";
}
Anda juga bisa menentukan tata letak mana yang harus digunakan ketika mengembalikan tampilan di dalam aksi pengontrol tapi itu per tindakan:
return View("Index", "~/Views/Shared/_StaffLayout.cshtml", someViewModel);
Namun kemungkinan lain adalah filter tindakan khusus yang akan menimpa tata letak. Seperti yang Anda lihat banyak kemungkinan untuk mencapai ini. Terserah Anda untuk memilih mana yang paling cocok dengan skenario Anda.
MEMPERBARUI:
Seperti yang diminta di bagian komentar, inilah contoh filter tindakan yang akan memilih halaman master:
public class LayoutInjecterAttribute : ActionFilterAttribute
{
private readonly string _masterName;
public LayoutInjecterAttribute(string masterName)
{
_masterName = masterName;
}
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
base.OnActionExecuted(filterContext);
var result = filterContext.Result as ViewResult;
if (result != null)
{
result.MasterName = _masterName;
}
}
}
dan kemudian menghias pengontrol atau tindakan dengan atribut khusus ini menentukan tata letak yang Anda inginkan:
[LayoutInjecter("_PublicLayout")]
public ActionResult Index()
{
return View();
}
Razor
, cukup aturLayout = null;