Url.Action पैरामीटर?


116

लिस्टिंग नियंत्रक में मेरे पास है,

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

ASPX पृष्ठ में मैं कॉल करता हूं,

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

मुझे ASPX कोड में एक समस्या है ... मैं जॉन नाम के रिकॉर्ड को खींच सकता हूं। लेकिन जब मैं देता हूंcontact="calgary, vancouver" , तो वेबपेज त्रुटि हो जाती है।

मैं दो मापदंडों को कैसे कह सकता हूं Url.Action। मैंने नीचे की कोशिश की, लेकिन यह भी गलत लगता है।

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

जवाबों:


207

निम्नलिखित सही अधिभार है (आपके उदाहरण में आप अनाम ऑब्जेक्ट के }लिए एक बंद याद कर रहे हैं routeValuesताकि आपका कोड एक अपवाद फेंक देगा):

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

मान लें कि आप डिफ़ॉल्ट मार्गों का उपयोग कर रहे हैं, इससे निम्नलिखित मार्कअप उत्पन्न होना चाहिए:

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

जो GetByListदो मापदंडों को पार करने वाली नियंत्रक कार्रवाई को सफलतापूर्वक लागू करेगा :

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

@ user787788, आपको क्या समस्या हो रही है? दो मापदंडों को स्वीकार न करने का क्या मतलब है ? कौन नहीं मान रहा है? क्या आपको कोई त्रुटि संदेश मिल रहा है? क्या आपका कंट्रोलर एक्शन हिट नहीं है? क्या आपको गलत मूल्य मिल रहे हैं? विशिष्ट होना।
डारिन दिमित्रोव

जब मैं दो पैरामीटर देता हूं, तो aspx पेज कंट्रोलर को भी नहीं मार रहा है। इसकी पृष्ठ में ही त्रुटि है। मेरे पास एक डिफाल्ट अपवाद है जिसे कुछ खराब हो गया है। aspx वहाँ जाता है
user787788

@ user787788, क्या त्रुटि है? सटीक संदेश जो आपको मिल रहा है?
डारिन दिमित्रोव

त्रुटि यह है, आपने गलत तरीके से पता (URL) टाइप किया होगा।
user787788

2
@DarinDimitrov, मुझे पता है कि यह एक बहुत पुरानी पोस्ट है, लेकिन मैंने देखा कि आप ऑनलाइन थे। मुझे नहीं लगता कि आपको पता होगा कि एक पैरामीटर को गतिशील रूप से कैसे पारित किया जाए ("जॉन" की तरह हार्डकोड नहीं किया गया)?

8

यह MVC 5 के लिए काम करता है:

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

4

आप HttpValueCollection नामक एक निजी संग्रह लौटा सकते हैं, यहां तक ​​कि प्रलेखन का कहना है कि यह ParseQueryString उपयोगिता का उपयोग करके एक NameValueCollection है। फिर मैन्युअल रूप से चाबियाँ जोड़ें, HttpValueCollection आपके लिए एन्कोडिंग करते हैं। और फिर मैन्युअल रूप से QueryString संलग्न करें:

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

यह करने का एक और सरल तरीका है

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

@Model.IDएक पैरामीटर कहां है

और यहाँ एक दूसरा उदाहरण है।

<a class="nav-link"
   href='@Url.Action("Print1", "DeviceCertificates", new { Area = "Diagnostics"})\@Model.ID?param2=ViewBag.P2&param3=ViewBag.P3'>Print</a>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.