Katakanlah saya punya kelas
public class ItemController:Controller
{
public ActionResult Login(int id)
{
return View("Hi", id);
}
}
Pada halaman yang tidak terletak di folder Item, di mana ItemController
berada, saya ingin membuat tautan ke Login
metode. Jadi Html.ActionLink
metode mana yang harus saya gunakan dan parameter apa yang harus saya lewati?
Secara khusus, saya mencari pengganti metode ini
Html.ActionLink(article.Title,
new { controller = "Articles", action = "Details",
id = article.ArticleID })
yang telah pensiun dalam inkarnasi ASP.NET MVC baru-baru ini.
c#
.net
asp.net-mvc
html-helper
actionlink
Graviton
sumber
sumber
Jawaban:
Saya pikir yang Anda inginkan adalah ini:
ASP.NET MVC1
Ini menggunakan metode tanda tangan ActionLink berikut:
ASP.NET MVC2
dua argumen telah diubah
Ini menggunakan metode tanda tangan ActionLink berikut:
ASP.NET MVC3 +
argumen dalam urutan yang sama dengan MVC2, namun nilai id tidak lagi diperlukan:
Ini menghindari pengodean logika perutean ke tautan.
Ini akan memberi Anda output html berikut, dengan asumsi:
article.Title = "Title"
article.ArticleID = 5
. .
sumber
, null
parameter SETELAH Andanew { ... }
... karena jika Anda memeriksa kelebihan metode itu, ia berpikir parameter Anda htmlArguments ... bukan merutekan argumen. Untuk menggunakan metode yang benar , Anda harus menggunakan metode yang memilikirouteArguments, htmlArguments
.. jadi masukkan saja nol untuk yang terakhirhtmlArgument
. Potongan kode pertama dalam balasan ini adalah miliknya. Saya telah memperbarui posting ini sehingga Anda dapat melihatnya dengan mudah (mis. Tidak menggulir).@Html.ActionLink("Text","Action","Controller", new { item.ID }, null)
Saya ingin menambahkan jawaban Joseph Kingry . Dia memberikan solusi tetapi pada awalnya saya tidak bisa membuatnya bekerja dan mendapatkan hasil seperti Adhip Gupta. Dan kemudian saya menyadari bahwa rute harus ada di tempat pertama dan parameter harus sesuai dengan rute tersebut. Jadi saya punya id dan kemudian parameter teks untuk rute saya yang juga perlu dimasukkan juga.
sumber
Anda mungkin ingin melihat metode
RouteLink()
. Yang memungkinkan Anda menentukan semuanya (kecuali teks tautan dan nama rute) melalui kamus.sumber
Saya pikir Joseph membalikkan kendali dan tindakan. Pertama datang aksi kemudian controller. Ini agak aneh, tetapi cara tanda tangan terlihat.
Hanya untuk memperjelas beberapa hal, ini adalah versi yang berfungsi (adaptasi dari contoh Joseph):
sumber
bagaimana dengan ini
sumber
sumber
Jika Anda ingin menggunakan semua celana panjang mewah, inilah cara Anda dapat mengembangkannya untuk dapat melakukan ini:
Anda harus meletakkan ini di
System.Web.Mvc
namespace:Ini mencakup dua penggantian untuk
Route Values
danHTML Attributes
, juga, semua tampilan Anda perlu ditambahkan:@using YourProject.Controllers
atau Anda dapat menambahkannya keweb.config <pages><namespaces>
sumber
Gunakan parameter bernama untuk keterbacaan dan untuk menghindari kebingungan.
sumber
Dengan MVC5 saya telah melakukannya seperti ini dan itu adalah kode kerja 100% ....
Kalian bisa mendapatkan ide dari ini ...
sumber
Jenis ini digunakan:
@ Html.ActionLink ("MainPage", "Index", "Home")
MainPage: Nama teks Indeks: Tampilan Aksi Home: HomeController
Penggunaan Basis ActionLink
sumber