Farklı görünümlerin kendi içeriklerini burada oluşturmasına izin vermek için _Layout.cshtml içinde @RenderSection("Contextual", false)
kullanın. Bazıları yok, diğerleri var. Ayrıca, belirli bir kullanıcının belirli denetleyici eylemlerine erişip erişemediğini ve böylece sitemdeki yönlendirmeleri kontrol etmek için rol tabanlı güvenlik ve bir ActionFilter kullanıyorum.Rol tabanlı güvenlik temelli Html.ActionLinks'in gizlenmesi
Ne yapmak istiyorum benim _Layout.cshtml üzerinde @RenderSection("Contextual", false)
bölümünü sağlamak ve daha sonra belirli bir sayfa bağlamsal ne şeyler o sayfa için mantıklı ve gelen kontrolör bir kullanıcı olup olmadığı incelemeden işlemesi sağlaması olduğunu numaralı bir eylemi gerçekleştirebilir ve belki de bu seçeneklerin olduğunu görebiliyor ancak bunun doğru olduğunu düşündüğümden emin değilim. Şu anda
ben şöyle benim Index.cshtml dosyalarından birinde bir bölüm var: Burada işler şu anda nasıl benim tekabül denetleyicisi sonra
@section Contextual {
<div>@Html.ActionLink("Create New", "Create")</div>
<div>@Html.ActionLink("Generate Report", "Report")</div>
<div>@Html.ActionLink("Other Stuff", "Other")</div>
}
ve ben şöyle bir şey var :
[Authorize(Roles = "Editor")]
public ActionResult Create()
{
// stuff
}
istediğim gibi bu çalışacaktır ancak girişi oluşturma görmesi için orada (olmayan Editörler yeni öğeler oluşturmak için almazsınız).
@section Contextual {
@if (User.IsInRole("Editor"))
{
<div>@Html.ActionLink("Create New", "Create")</div>
}
<div>@Html.ActionLink("Generate Report", "Report")</div>
<div>@Html.ActionLink("Other Stuff", "Other")</div>
}
Ve bu olmayan Editörler gelen bağlantı oluşturma gizleme, yeteri kadar iyiyse, ama iyi olmadığı konusunda çit değilim ya bu şekilde işlemek için değil artı: ben şöyle bir şey yapabilirsiniz yolun aşağısında, kuralların değiştiği durumu anladım ve sonra senkronize olmak için iki noktam var: denetleyici eylemindeki öznitelik ve görünümdeki kod.
Bu makul bir yaklaşım mıdır? Buna yaklaşmanın daha iyi bir yolu var mı?
Yanıt için teşekkürler. Çözümünüzle ilgili hoşuma giden şey, Kullanıcı rolü kontrolünün kontrolörde yapıldığı ve daha sonra Görünüm işinin gerçekten endişelenmediği fikridir * Neden * Oluşturma işlevi etkinleştirildi/devre dışı bırakıldı - bunu ayırır bilgi çıkışı. Denetleyici tarafında CanCreate biti çevirmek için kullanılabilecek çeşitli nedenlere izin verir. İyi şeyler. Ben * kesinlikle * bu uzantısı yöntemi gibi - bu * kullanışlı *. :) – itsmatt
@itsmatt sorun değil. Üzerinde çalıştığım mevcut sistem (context + role) tabanlı güvenlik ile dolu, bu yüzden çok fazla çalışın. Sanırım kilit noktayı vurup, kontrolün görüşlerini endişelendiriyorsunuz. Başka bir rota, role göre bağlantı listesi oluşturmak olabilir (kontrolörde de olabilir). – TJB