yoktur itibaren hayır 1: (en kiracı diyelim, "bu sitenin Sayfalar her zaman belirli bir bağlamda talep edilmektedir:
Model: bir sebebi MVC 1 eşdeğer, en sadece bu konuda MVC şekilde düşünmenin nasıl recapitulate izin veya kullan r, konu veya alt alanlarınız ne olursa olsun). etki alanı modeli, geçerli isteğin kiracı temsil eden bir özelliği vardır "
Görünüm: 'modelde belirlenen kiracı bağlı sayfa başlığını Render'
Kontrolörü:". kiracı Set anabaşlık" bağlı modelinde.
daha sonra tek bir yerde veya bir yerde kontrolör mantığı olması. kontrolör, görünümü ve iş mantığını karıştırma önlemek istediğini, bu çağrılmaz unutmayın Ayrı kaldığı sürece "denetleyici" bir sorun değildir.
Ve şimdi iyi bir şey: Web Formları ile bile bu "MVC stili" yapabilir ve çözüm hala ASP.NET MVC ile çalışır!
Yine de yaşam döngüsü isteğiniz var (sayfa ömrü değil), böylece tüm istekler için denetleyici mantığının bu bölümünü içeren özel bir HttpModule uygulayabilirsiniz. BeginRequest olayını ele alır, ana bilgisayar üstbilgisini kontrol eder ve kiracıyı HttpContext.Current.Items ["kiracı"] gibi bir şeye kaydeder. (Tabii ki, bu sözlük girdisi için statik, yazılan bir sarmalayıcı olabilir.)
Daha sonra, tüm model nesneleriniz (veya bir model temel sınıfı veya çözümünüz için uygun olan her şey) HttpContext'e bu erişim sağlamak için erişebilir böyle bilgiler:
public string Tenant
{
get { return HttpContext.Current.Items["tenant"]; }
}
Avantajları: Sen neden (ana bilgisayar başlık) ve etkisi (sayfa başlığı render)
nedenle idame ve test edilebilir iyileştirilmesi ayrıldık
- Bu duruma dayalı olarak etki alanı modelinize, mevcut kiracıya bağlı olarak veritabanından içerik yüklemek gibi kolayca ek davranışlar ekleyebilirsiniz.
- Görünümün daha fazla bölümünü, içerdiğiniz CSS dosyası, logo görüntüsü vb. Gibi kiracıya göre kolayca yapabilirsiniz.
- Daha sonra modeldeki kiracıyı modele göre ayarlamak için denetleyici mantığını değiştirebilirsiniz. alt alan adı olabilir, ancak modele bağlı olarak kodunuzdan herhangi birini değiştirmeden bir çerez, bir yönlendiren, arama terimi, kullanıcı aracısının dili veya düşünebileceğiniz her şeye dayanabilir. Düzenlemenizle yeniden
Güncelleme: Ben senin oturum tanımlama her bir alt etki alanına, ancak tüm alanların sadece geçerli olabilir, özellikle eğer oturumda devlet tutma fikrini sevmiyorum. Bu durumda, kullanıcılar daha önce başka bir alt alana sahip olmaları durumunda tutarsız içerik sunabilir. Muhtemelen, ana bilgisayar üstbilgilerini kiracılarla eşleştiren veritabanındaki bilgiler çok sık değişmeyecek, bu nedenle önbelleği alabilir ve her istek için bir veritabanı aramasına gerek duymazsınız. İhtiyacınız ne
mı? – Brandon