2009-09-27 16 views
8

मैंने डेटाबेस में एक टेबल बनाई है जिसमें एक System.Guid है क्योंकि यह प्राथमिक कुंजी है। आवश्यक एडीओ.Net इकाई फ्रेमवर्क मॉडल उत्पन्न किया गया है और आवश्यक संग्रहित प्रक्रियाओं को मैप किया गया है।ASP.Net MVC में प्राथमिक कुंजी के रूप में एक सिस्टम का उपयोग करें।

मैंने एक नया नियंत्रक बनाया और डेटा के लिए बनाएं और संपादित करने के लिए मूल आवश्यक कोड जोड़ा। लेकिन जब लिंक पर क्लिक करने के लिए एक विशेष रिकॉर्ड निम्न त्रुटि उत्पन्न होता है संपादित करने के लिए:

The parameters dictionary contains a null entry for parameter '[MyId]' of non-nullable type 'System.Guid' for method 'System.Web.Mvc.ActionResult Edit(System.Guid)' in '[MySite].[MyController].[SpecificController]'. To make a parameter optional its type should be either a reference type or a Nullable type. Parameter name: parameters

संपादित कार्रवाई नियंत्रक में घोषित किया जाता है इस प्रकार है:

public ActionResult Edit(Guid itemId) 
{ 
    return View(); 
} 

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult Edit(MyItem itemToModify) 
{ 

} 

जब एक नया जोड़ने रिकॉर्ड करें नई ग्रिड एक संग्रहीत प्रक्रिया के माध्यम से उत्पन्न होता है और सूची सही ग्रिड प्रदर्शित कर रही है। यूआरएल पुनर्प्राप्ति के लिए सही ग्रिड भी पास कर रहा है।

मैं उस बिंदु को कैप्चर नहीं कर सकता जिस पर यह विफल रहता है, लेकिन मैं सिस्टम को पास करने के बारे में कैसे जाउंगा। नियंत्रक के पैरामीटर के रूप में गुड करें?

उत्तर

17

जब तक आप अपने मार्गों को अपडेट नहीं करते हैं, तो यह "आईडी" नाम के मार्ग में अंतिम पैरामीटर (डिफ़ॉल्ट रूप से) होने की उम्मीद कर रहा है। यही है, अगर आपके पास रूट/विशिष्ट/संपादन/5646-0767 -.. जैसे मार्ग हैं, तो यह आपकी विधि के पैरामीटर के नाम के बावजूद कुंजी "आईडी" के साथ रूट वैल्यू डिक्शनरी में गाइड को मैप करेगा। मैं इस सम्मेलन का पालन करें और करने के लिए विधि परिभाषा को बदल देंगे:

public ActionResult Edit(Guid id) 

आप इस के आसपास हो सकता है, स्पष्ट रूप से मार्ग पैरामीटर का नाम निर्दिष्ट करने के द्वारा, लेकिन फिर आप एक यूआरएल है कि तरह लग रहा है के साथ अंत:/विशिष्ट/संपादन? Itemid = 5646-0767 -...

+0

अब मैं पूछने के लिए बेवकूफ महसूस करता हूं :( – BinaryMisfit

+0

इसके बारे में चिंता न करें - एकमात्र कारण मुझे जवाब पता था कि मैंने एक ही काम किया था और इसे समझना था। – tvanfosson

4

वाले किसी भी व्यक्ति के लिए आवश्यकता हो सकती है नीचे नमूना कोड लाना (मुझे यकीन है कि किया था)

 public ActionResult Profile(Guid? id) 
    { 
     if (!id.HasValue) 
     { 
      return View(new ProfileRepository().GetUserProfile(User.Identity.Name)); 
     } 

     return View(new ProfileRepository().GetUserProfile(id.Value)); 

    } 

anwer जो ऊपर मुझे सही में नेतृत्व के लिए धन्यवाद दिशा

संबंधित मुद्दे

 संबंधित मुद्दे