साथ Html.ActionLink का उपयोग करते हुए मैं निम्न HTML है:RouteValues
<a href="/Product/Details?ProductId=1">My Product Name</a>
हालांकि, जब मैं इस पर क्लिक करें, मैं निम्नलिखित त्रुटि मिलती है:
<%: Html.ActionLink(item.ProductName, "Details", "Product", new { item.ProductId }, null)%>
इस के रूप में प्रदान की जा रही है
The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Details(Int32)' in 'MyProject.Controllers.ProductController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter.
Parameter name: parameters
ऐसा प्रतीत होता है कि मेरी रूटिंग को "productId = 1" क्वेरी स्ट्रिंग पसंद नहीं है।
अगर मैं बजाय का उपयोग करें:
<%: Html.ActionLink(item.ProductName, string.Format("Details/{0}", item.ProductId), "Product", null, null)%>
मैं नीचे दिए गए लिंक प्रदान की गई मिलती है:
<a href="/Product/Details/1">My Product Name</a>
... और इस सही ढंग से जब क्लिक काम करता है।
क्या मुझे यहां कुछ बुनियादी याद आ रही है? मैं रूटवेल का उपयोग करना चाहता हूं, लेकिन मुझे समझ में नहीं आता कि यह त्रुटि क्यों फेंक दी जा रही है। क्वेरी स्ट्रिंग पैरामीटर को स्वीकार करने के लिए मैं अपनी नियंत्रक विधि कैसे प्राप्त कर सकता हूं?
केवल मार्ग मानचित्रण मेरे पास है:
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
या ... यदि मैं रूटवैल्यू पैरामीटर में "id =" जोड़ता हूं: <% = HTML.ActionLink (item.ProductName, "विवरण", "उत्पाद", नया {id = item.ProductId}, शून्य)%> फिर मुझे निम्न लिंक मिलता है: My Product Name ... जो भी काम करता है! – seanfitzg
@seanfitzg, आप सही हैं, लेकिन मुझे लगता है कि आप नहीं चाहते हैं कि आपके सभी पैरामीटर नाम "आईडी" हो ... – gdoron