URL.Action parametreleri?


116

Denetleyiciyi listelemede,

 public ActionResult GetByList(string name, string contact)
 {        
     var NameCollection = Service.GetByName(name);    
     var ContactCollection = Service.GetByContact(contact);           
     return View(new ListViewModel(NameCollection ,ContactCollection));
 }

ASPX sayfasında aradım,

 <a href="<%:Url.Action("GetByList","Listing" , new {name= "John"} , new {contact="calgary, vancouver"})%>"><span>People</span></a>

ASPX kodunda bir sorunum var ... john adı için kayıtları alabilirim. ama verdiğimde contact="calgary, vancouver"web sayfası hata veriyor.

.Tml dosyasındaki iki parametreyi nasıl çağırabilirim Url.Action? Aşağıdakini denedim ama bu da yanlış görünüyor.

  <a href="<%:Url.Action("GetByList","Listing" , new {name= "John" , contact= " calgary, vancouver" })%>"><span>People</span></a>

Yanıtlar:


207

Aşağıdakiler doğru aşırı yüklemedir (örneğinizde anonim nesnenin kapanışını kaçırıyorsunuz }, routeValuesböylece kodunuz bir istisna atacak):

<a href="<%: Url.Action("GetByList", "Listing", new { name = "John", contact = "calgary, vancouver" }) %>">
    <span>People</span>
</a>

Varsayılan yolları kullandığınızı varsayarsak, bu aşağıdaki işaretlemeyi oluşturmalıdır:

<a href="/Listing/GetByList?name=John&amp;contact=calgary%2C%20vancouver">
    <span>People</span>
</a>

bu GetByList, iki parametreyi geçen denetleyici eylemini başarıyla başlatır :

public ActionResult GetByList(string name, string contact) 
{
    ...
}

@ user787788, ne sorunu yaşıyorsun? İki parametreyi kabul etmemekle neyi kastediyorsunuz ? Kim kabul etmiyor? Bir hata mesajı mı alıyorsunuz? Kontrolör eyleminiz vurulmadı mı? Yanlış değerler mi alıyorsun? Açık ol.
Darin Dimitrov

İki parametre verdiğimde, aspx sayfası denetleyiciye bile vurmuyor. Hatayı sayfanın kendisinde bulması. Aşınmış bir şey denen bir defalut istisnam var. aspx oraya gidiyor
user787788

@ user787788, hata nedir? Tam mesaj mı alıyorsun?
Darin Dimitrov

hata, adresi (URL) yanlış yazmış olabilirsiniz.
user787788

2
@DarinDimitrov, bunun çok eski bir gönderi olduğunu biliyorum , ancak çevrimiçi olduğunu gördüm. Bir parametrenin dinamik olarak nasıl geçirileceğini bildiğini sanmıyorum ("John" gibi kodlanmış değil)?

8

Bu, MVC 5 için çalışır:

<a href="@Url.Action("ActionName", "ControllerName", new { paramName1 = item.paramValue1, paramName2 = item.paramValue2 })" >
    Link text
</a>

4

Belgeler, ParseQueryString yardımcı programını kullanarak bir NameValueCollection olduğunu söylese bile, HttpValueCollection adlı özel bir koleksiyon döndürebilirsiniz. Ardından anahtarları manuel olarak ekleyin, HttpValueCollection kodlamayı sizin yerinize yapın. Ve sonra QueryString'i manuel olarak ekleyin:

var qs = HttpUtility.ParseQueryString(""); 
qs.Add("name", "John")
qs.Add("contact", "calgary");
qs.Add("contact", "vancouver")

<a href="<%: Url.Action("GetByList", "Listing")%>?<%:qs%>">
    <span>People</span>
</a>

0

İşte bunu yapmanın başka bir basit yolu

<a class="nav-link"
   href='@Url.Action("Print1", "DeviceCertificates", new { Area = "Diagnostics"})\@Model.ID'>Print</a>

@Model.IDParametre nerede

Ve burada ikinci bir örnek var.

<a class="nav-link"
   href='@Url.Action("Print1", "DeviceCertificates", new { Area = "Diagnostics"})\@Model.ID?param2=ViewBag.P2&param3=ViewBag.P3'>Print</a>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.