Saya membuat aplikasi ASP.NET MVC. Saat ini tautan saya terlihat seperti:
/Campaign/Overview/996e19da-c5e6-e511-948f-005056822904
/Service/Offer/767619da-c5e6-e511-948f-005056e529a5
Saya ingin mereka terlihat seperti:
/Campaign/Overview/996e19da-c5e6-e511-948f-005056822904/campain-user-friendly-text-taken-from-the-db
/Service/Offer/767619da-c5e6-e511-948f-005056e529a5/service-user-friendly-text-taken-from-the-db
Artinya ketika Anda mengakses
/Campaign/Overview/996e19da-c5e6-e511-948f-005056822904/
Anda seharusnya mendapatkan 301 dan dialihkan ke/Campaign/Overview/996e19da-c5e6-e511-948f-005056822904/campain-user-friendly-text-taken-from-the-db
Selain itu, saat Anda memposting ke
/Campaign/Overview/996e19da-c5e6-e511-948f-005056822904/campain-user-friendly-text-taken-from-the-db
dan dalam metode yang Anda lakukanreturn View(vm);
, URL tersebut harus tetap disimpan.Dan yang terakhir, namun tidak kalah pentingnya ketika Anda menggunakan @Html.ActionLink("Klik di sini", "Ikhtisar", "Kampanye") Saya ingin membuat tautan dengan teks yang ramah pengguna (yang akan menjadi sesuatu yang lain dalam kasus kampanye dan layanan).
Apa solusi termudah untuk apa yang saya inginkan? Saya dapat memikirkan hal-hal yang dapat saya lakukan dengan perutean dan beberapa ekstensi htmlHelper, tetapi saya merasa membuatnya terlalu rumit dan saya menciptakan kembali rodanya. Apakah saya?
Pertanyaan serupa telah ditanyakan di sini: Bagaimana cara membuat url yang ramah pengguna seperti stackoverflow ?, tapi itu tidak menjawab pertanyaan saya.
FilterAttribute
dapat berfungsi adalah jika nama pengontrol Anda sama persis dengan nama tabel Anda (atau setidaknya beberapa konvensi sehingga Anda dapat mencocokkannya) dan memanggil beberapa metodeGetSlug(Guid ID)
generik. - person   schedule 18.03.2016protected IRepository<TEntity> Repository
, maka Anda akan dapat menggunakan sesuatu sepertistring slug = filterContext.Controller.Repository.GetSlug(filterContext.ActionParameters["ID"]);
- person   schedule 18.03.2016