2010-02-23 9 views
5

मैं सिर्फ Ajax.BeginForm का उपयोग कर एक सामान्य POST अनुरोध भेज रहा हूं ... मैं। टेक्स्टबॉक्स का उपयोग कर फॉर्म तत्वों को आउटपुट करता हूं। .TextBoxFor औरHiddenFor आदि ... जैसा कि मुझे करना चाहिए ... और जब यह मेरी क्रिया के लिए AJAX के माध्यम से पोस्ट किया जाता है विधि, क्रिया विधि में ऑब्जेक्ट (नाम "टिप्पणी") मूल्यों के साथ पॉप्युलेट नहीं है!क्या एमएसी 2.0 मॉडल अजाक्स अनुरोधों के साथ बाध्यकारी काम करता है?

क्या मुझे कुछ याद आ रही है? यहाँ

<% Using Ajax.BeginForm("UpdateComment", "Home", 
    New AjaxOptions With {.UpdateTargetId = Model.CommentDivId, 
    .HttpMethod = FormMethod.Post})%> 

और ....

<%= Html.HiddenFor(Function(x) x.Comment.CommentID)%> 

<%= Html.TextAreaFor(Function(x) x.Comment.Comment, 8, 40, 
        New With {.style = "overflow: hidden;"})%> 

    <%= Html.ValidationMessageFor(Function(x) x.Comment.Comment) %> 

यहाँ कार्रवाई विधि है, जो त्रुटि को जन्म देती है जो लोग इसे देखना चाहते हैं करने के लिए अपने कोड के प्रासंगिक हिस्सा है ... ... त्रुटि एक अशक्त संदर्भ अपवाद नहीं है जब मैं वस्तु का उपयोग करने का प्रयास करें:

Function UpdateComment(ByVal UpCom As Comment) As ActionResult 

मंद db = नई FPicDataContext मंद updatable = (से ग db.Comments में कहाँ c.CommentID = UpCom.CommentID) .FirstOrDef अल्ट अद्यतन करने योग्य। टिप्पणी = अपकॉम। टिप्पणी 'यह कहां है कि ऑब्जेक्ट नाराज है! मूल रूप से, अपकॉम में सभी मूल्य (टिप्पणी के रूप में) 0 या कुछ नहीं हैं। db.SubmitChanges()

मंद सेमी = नए CommentModel साथ {.Comment = UpCom, .CommentDivId = "CommentDiv" & UpCom.CommentID.ToString}

वापसी PartialView ("टिप्पणी", सेमी)

एंड फ़ंक्शन

+0

मुझे यह भी काम करने की उम्मीद होगी! ??? – jwwishart

+0

Pleas POST एक्शन विधि कोड और आपके दृश्य के HTML आउटपुट का उपयोग करें। – LukLed

+0

हैलो, मैंने अनुरोधित विवरण के साथ मूल पोस्ट अपडेट किया है :) –

उत्तर

2

इस समस्या को मैंने अंततः हल किया, ऑब्जेक्ट नाम को बदल दिया गया है कि मॉडल क्रिया तर्क में बाध्य है, जैसा कि आपने टेक्स्टबॉक्स फॉर स्टार्टफॉर्म आदि करते समय ऑब्जेक्ट नाम का उपयोग किया था ... परीक्षण किया, पुष्टि की, यह था !

इसलिए, दूसरे शब्दों में, UpCom को इसके बजाय Comment नाम दिया जाना था :)।

हालांकि, सावधानी के एक नोट, मैंने किसी भी दस्तावेज़ीकरण या किसी भी चीज़ में कहीं भी इस आवश्यकता के बारे में नहीं सुना है !! किसी के पास इस बारे में कोई विचार है?

+2

किसी को भी जवाब देने के लिए क्यों जवाब दिया जाएगा जब किसी को भी उपयोगी लगे, तो मैं कुछ भी नहीं कह सकता था और इसे इस तरह से छोड़ दिया, यह जवाब देने के लिए मुझे लाभ नहीं पहुंचाता है। मुझे लगता है कि एसओ में बहुत सारे प्रोग्रामर स्नब्स हैं जो 60 लोगों के सवालों के बाद अपने जीवन के अन्य हिस्सों में अपनी असुरक्षा को पूरा करने के प्रयास में दूसरों से बेहतर दिखने की कोशिश करते समय दूसरों को बेहतर बनाने की कोशिश करने से बाहर निकलते हैं, मैं इसे सब कुछ देखता हूं वास्तव में, अत्यधिक स्नोबी प्रोग्रामर जो खुद से भरे हुए हैं। प्रोग्रामर के बारे में सामान्य रूप से यह क्या कहता है? जिज्ञासु! –

1

प्रतीक्षा करें मुझे लगता है कि मैं देख रहा हूं कि आप अब क्या करने की कोशिश कर रहे हैं और जवाब हां पूर्ण है।

कुछ jQuery प्लगइन्स हैं जिन्हें आप पकड़ सकते हैं जो अजाक्स का उपयोग करके फ़ॉर्म पोस्ट करने की अनुमति देगा।

मैंने इसका उपयोग किया है और यह ठीक काम करता है। jQuery Form Plugin यह आपके लिए भी काम कर सकता है। .submit

+0

Jquery.Form भयानक है। – jfar

+0

हाँ यह बहुत अच्छा है। – griegs

+2

हे इस जानकारी के लिए धन्यवाद, हालांकि मैं इसे करने के लिए AJAX.beginForm पहले (बेहतर संकलन समय जांच) का उपयोग करने की कोशिश करूंगा, मुझे आशा है कि यह विज्ञापित के रूप में काम करेगा, अन्यथा मुझे लगता है कि अगर मैं डॉन करता हूं तो मुझे कुछ याद आ रहा है यह नहीं सीखें कि इसका तरीका क्या किया जाना है ... –

1

@ Erx_VB.NExt.Coder मैंने आपको बिंदु वापस दिया क्योंकि मैंने इस पर कुछ और ढूंढने के लिए ठोकर खाई और आखिरकार एक ही मुद्दा मारा, लेकिन शब्द स्पष्ट नहीं था इसलिए मैं अपडेट करना चाहता था और मदद करने की कोशिश करता था। मेरे उदाहरण में मैं पुनरावृति के माध्यम से एक निष्कर्ष के माध्यम से

foreach (var row in Model.Findings) /* Doesn't Work */ 
. 
. 
. 
<td> <%: Html.TextAreaFor(m => row.Description)%> </td> 

और मेरे नियंत्रक आपत्ति: एक तालिका के अंदर बाहर

public void Update(ReportFindingViewModel Finding) 

और प्रिंट क्षेत्रों।मैं कार्रवाई जब भी मैं पोस्ट करने के लिए हिट हो रही थी वापस, लेकिन जैसे आपने कहा, वस्तु अशक्त था:

<%: Ajax.BeginForm("Update", "ReportFinding", new AjaxOptions { HttpMethod = "Post" })%> 

के रूप में आप बताया गया है, यह गया था नाम में सभी, लेकिन क्या मैं स्पष्ट करना चाहते हैं कि यह है लैम्ब्डा अभिव्यक्ति का नाम जिसे आप खेतों में बांधते हैं। जब मैंने इसे बदल दिया:

foreach (var Finding in Model.Findings) /* Does Work */ 
. 
. 
. 
<td> <%: Html.TextAreaFor(m => Finding.Description)%> </td> 

मॉडलबाइंडिंग ऑटो-जादुई रूप से इसे सब कुछ पता चला। मैं शामिल एमएस AJAX कार्यक्षमता का उपयोग करने के लिए पूरी तरह से नया हूँ और एमवीसी पूरी तरह से नया नया, लेकिन इससे मदद मिली। धन्यवाद!

+0

@ सेंसिलिथोकिरी आपके विस्तार के लिए बहुत बहुत धन्यवाद, मुझे खुशी है कि यह उपयोगी था और आपको वोट दिया है ताकि लोग अतिरिक्त स्पष्टीकरण के लिए आपका उत्तर देख सकें :)। साथ ही, अगर मुझे समस्या ठीक से याद आती है, तो मुझे नहीं लगता कि एमवीसी इसे पसंद करता है जब आप माता-पिता और बच्चे की वस्तु/संपत्ति के लिए समान नामों का उपयोग करते हैं जैसे कि मैंने "टिप्पणी। टिप्पणी" का उपयोग किया जहां पहली टिप्पणी वस्तु है और दूसरा स्ट्रिंग है। –

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