ASP.Net Core ve MVC 6 ile FragSwapper.com web sitemi yeniden yazıyorum (şu anda Asp 2.0'de!) Ve normalde sahip olduğum bir şeyi yapmaya çalışıyorum db kodu ve bazı Yönlendirmeler ile birlikte bir URL Re-Write aracı kırmak için ama ASP.Net Core muhtemelen MVC Yönlendirme ve Yönlendirme ile yapmak için "daha iyi" bir yol olup olmadığını bilmek istiyorum. Ne yapmalı [root]MVC ve ASP.Net Core ile dinamik url yeniden yazma
: Burada
siteyi erişme
URL ... benim senaryolar vardır zamanki [Ana] Kontrolör ve git [ Dizin] Görüntüle (no [ID]). ... Bu şimdi yapar: [root]/ControllerName/... laf kalabalığı ...
Ne yapmalı: Git
app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}"); });
URL sitesini Erişme Kontrolöre, vb ... tüm bu da çalışır.
zor bir site: Erişme URL: Bir Olay Kimliği bulursanız Erişim veritabanı ve karar vermek için bazı mantık yapın: [root]/SomeString Ne yapmalı
. Eğer [Event] Controller'a ve [Index] View'a ve bulduğum her şeyin bir [ID] bölümüne gidersem. Aksi takdirde bir Host ID bulmaya çalışıyorum ve [Home] Controller'a ve [Organization] View seçeneğine gidin. Bulamıyorsam ve Event veya Host olağan [Home] Controller'a ve [Index] View'a (no [ID]) gider.
Buradaki en büyük özellik, 2 farklı denetleyicide tamamen farklı üç farklı görünümden birine yönlendirmek istediğim.
Yani, kullanıcı sitemin köküne geldiğinde ve üzerinde tek bir "/ Something" olduğunda ve mantığın veritabanıyla çalıştırıldığı zaman, bir mantık yapmak istiyorum.
Soruyu anlıyorsanız, şimdi okumayı durdurabilirsiniz ... Tüm bu mantığın neden gerekli olduğunu anlamanız gerektiğini düşünüyorsanız, daha ayrıntılı bir bağlam için okumaya devam edebilirsiniz.
Sitemde iki mod vardır: Bir Etkinliği Görüntüleme ve Olayını Görüntüleme! Genellikle bir seferde çalışan 4 veya 5 olay vardır, ancak çoğu kullanıcı yalnızca bir etkinlikle ilgilenir, ancak her 4 ayda bir FARKLI bir olay 'dur. [Host] öğesi var ve her Ana Bilgisayar 4'e kadar saklar. Olaylar yılda bir, birer birer. Çoğu kullanıcı sadece bir Host kullanıcısının olaylarını önemser.
Bir kullanıcı her zaman bir olay haritaya giderek bulmak olay ve ben (ücretsiz) bir harita gösterebilir kaç kez bir sınırı vardır çünkü üzerine tıklayın yapmaktan kaçınmaya çalışıyorum ve gerçekten var gerekli değil. kullanıcının% 99,99'unun sitemde olması, bir Etkinlik ekranında, Evim ekranlarında değil, aynı anda yalnızca bir etkinlikle ilgileniyor. gelecekteki web siteme gelirlerse, onlar için etkinliğine veya favori ana bilgisayarlarından yeni bir etkinliğe gitmeleri için kod yazmak istiyorum. Bu yüzden çok sayıda tıklamayı önleyebilir ve [Ev] denetleyici sayfalarını yeniler için odaklayabilirim ... ama ben henüz otomatik oturum açma çalışmasına sahip değil, bu yüzden arka brülörde.
Ama şimdilik barındıran her zaman onların olaylar için aynı url sahip olmak istiyorum: FragSwapper.com/[Host Kısaltma] ... ve her zaman farklı bir kimliğinin olduğunu mevcut olaya gidecek biliyorum her 4 ay !!!
Çılgın ... Biliyorum ... ama teknik olarak çok kolay, bilmiyorum Nasıl yapıldığını MVC'de nasıl düzgün yapmalıyım.
Bu kesinlikle bir cevapta beklediğimden daha fazlaydı ve konsept kesinlikle ihtiyaç duyduğum şeydi! İçeri girmenin bir yolu olmalı diye düşündüm, sadece nereye bakacağımı bilmiyordum. Hala onunla oynuyordum, ama hiç şüphem yok ki ortadaki mal (benim için tamamen bilinmeyen bir kavramdı) benim yapmam gereken şey. En büyük problemi .Net Core ile oynayarak buluyorum. Yeteri kadar insan zaten benimle aynı sorunları yaşamadı ve bana bakmak için çok az yer verdi. Zaman ayırdığınız için çok teşekkürler. –
Hiç sorun değil! Çerçeve ile ilgili olarak, tamamen size katılıyorum, asp.net çekirdeğinde birçok şey değişti ve bazen etrafta yolunuzu bulmak zor. Şüphelendiğimde [docs] 'dan (https://docs.asp.net/en/latest/) başlamayı deniyorum, ancak burada bile henüz ele alınmayan pek çok konu var. –
Orta yazılımı MVC'den önce mi, sonra mı eklediniz? Ve bir sonraki çağırmadan önce yolu değiştirir misin? Hangi yolu ayarlıyorsunuz ve kontrol edeceği kontrol ve rota nedir? Kodunuzu görmeden bilmek zor, ancak yukarıdaki cevap yeni bir 1.0.1 uygulamasında iyi çalışıyor. Belki yeni bir boş uygulamayı deneyin ve yavaşça kodunuzu eklemeye başlayın, eğer hala sorun yaşıyorsanız yeni bir soru açmaya değebilir! (Ayrıca [bu makale] (http://www.dotnetcurry.com/aspnet/1312/aspnet-core-request-pipeline-vanity-url) yazdım, (aynı fikir üzerinde genişletir) ayrıca bulabilirsiniz. –