Saya perlu membuat beberapa URL dalam model di ASP.NET MVC. Saya ingin memanggil sesuatu seperti UrlHelper.Action () yang menggunakan rute untuk menghasilkan URL. Saya tidak keberatan mengisi kekosongan yang biasa, seperti nama host, skema dan sebagainya.
Apakah ada metode yang bisa saya panggil untuk itu? Apakah ada cara untuk membangun UrlHelper?
asp.net-mvc
urlhelper
pupeno
sumber
sumber
Jawaban:
Kiat bermanfaat, dalam aplikasi ASP.NET apa pun, Anda bisa mendapatkan referensi dari HttpContext saat ini
yang berasal dari System.Web. Oleh karena itu, berikut ini akan berfungsi di mana saja dalam aplikasi ASP.NET MVC:
Contoh:
Memanggil
Link
properti pada objek MyModel yang dibuat akan mengembalikan Url yang valid untuk melihat Model berdasarkan perutean di Global.asaxsumber
using
untuk keduanyaSystem.Web
danSystem.Web.Mvc
Saya suka jawaban Omar tapi itu tidak berhasil untuk saya. Sebagai catatan, ini adalah solusi yang saya gunakan sekarang:
sumber
UrlHelper dapat dibangun dari dalam aksi Pengendali dengan berikut ini:
Di luar pengontrol, UrlHelper dapat dibangun dengan membuat RequestContext dari RouteTable. Rute RouteData.
(Berdasarkan jawaban Brian, dengan koreksi kode minor ditambahkan.)
sumber
var urlHelper = new UrlHelper(HttpContext.Current.Request.RequestContext);
this.ControllerContext.RequestContext
aHttpRequestContext
, dan konstruktorUrlHelper
mengharapkan aRequestContext
. Kedua kelas tidak berhubungan.Ya, Anda bisa instantiate. Anda dapat melakukan sesuatu seperti:
RouteTable.Routes
adalah properti statis, jadi Anda harus OK di sana; untuk mendapatkanHttpContextBase
referensi,HttpContextWrapper
mengambil referensi keHttpContext
, danHttpContext
mengirimkannya.sumber
Setelah mencoba semua jawaban lain, saya berakhir dengan
Pembenci akan membenci ¯ \ _ (ツ) _ / ¯
sumber
Saya mencoba melakukan sesuatu yang serupa dari dalam halaman (di luar controller).
UrlHelper tidak mengizinkan saya membangunnya semudah jawaban Pablos, tapi kemudian saya ingat trik lama untuk efektif melakukan hal yang sama:
sumber
Saya pikir yang Anda cari adalah ini:
sumber