2009-12-27 19 views
27

मुझे POST कार्रवाई एक पूर्ण यूआरएल (उदाहरण के लिए, http://www.cnn.com) होना चाहिए। क्या Html.BeginForm() सहायक का उपयोग करने का कोई तरीका है और इसे यूआरएल पास करें?एचटीएमएल.बीजिनफॉर्म() एक पूर्ण यूआरएल के साथ?

उत्तर

14

HtmlHelper.BeginForm विधि यह है कि <form> टैग बनाने में मदद करता है जो स्थानीय नियंत्रक को लक्षित करता है। आप किसी बाहरी साइट में पोस्ट कर रहे हैं, बस वास्तविक <form> टैग, अर्थात

<form action="http://www.example.com/someaction" method="post"> 
    Actual form content in here 
</form> 

इसके लिए बस इतना है कि बाहर लिखें। एमवीसी फॉर्म एएसपी.नेट वेबफॉर्म में रूपों की तरह नहीं हैं जहां आपके पास व्यूस्टेट और ईवेंट फ़ील्ड और अन्य जादुई तत्वों का समूह है। वे सिर्फ नियमित रूप से पुराने HTML रूप हैं।

+0

ये, मैंने यह किया। लेकिन मैं बस सोच रहा था कि क्या मुझे एमवीसी में कुछ याद आ रहा था (आरओआर लैंड से आ रहा है, एक फॉर्म {url =()} विधि है। Thx। – dale

+4

सत्यापन के संबंध में कुछ पतले हो सकते हैं जो आपके लिए नहीं बनाए जाते हैं आप मैन्युअल रूप से फॉर्म बनाते हैं - इसलिए देखें कि यदि आप jQuery –

+1

के साथ एमवीसी सत्यापन का उपयोग कर रहे हैं, तो सिमॉन वीवर ने इंगित किया है, यदि आप HtmlHelper सत्यापन फ्रेमवर्क का उपयोग नहीं करते हैं तो काम नहीं करता है। मुझे इस समस्या का सामना करना पड़ा – Zasz

0

जांच MVC स्रोत कोड, html.beginform विधि केवल केवल देशी एचटीएमएल प्रपत्र नहीं बना, लेकिन यह भी ग्राहक सत्यापन जो सिर्फ मैं चाहता हूँ के लिए sth जोड़ने के लिए,

if (htmlHelper.ViewContext.ClientValidationEnabled) 
{ 
    htmlHelper.ViewContext.FormContext.FormId = tagBuilder.Attributes["id"]; 
} 

तो यह एक समस्या हो जाएगा, मैं बस अपना खुद का विस्तार लिखें

57

BeginForm विधि में कई ओवरलोड हैं।

BeginForm(String, String, FormMethod, IDictionary<String, Object>) 
// here are the parameter names: 
BeginForm(actionName, controllerName, method, htmlAttributes) 

आप किसी बाहरी साइट में पोस्ट करना चाहते हैं के बाद से, वहाँ actionName स्थापित करने के लिए कोई जरूरत नहीं है: वांछित यूआरएल के साथ प्रपत्र टैग पर कार्रवाई विशेषता सेट करने के लिए, आप BeginForm के निम्नलिखित अधिभार उपयोग करने की आवश्यकता और नियंत्रकनाम, बस उन्हें शून्य के रूप में छोड़ दें।

@Html.BeginForm(
    null, null, FormMethod.Post, new {@action="http://cnn.com/post"} 
) 

यह क्रिया पैरामीटर को एन्कोड नहीं करेगा।

+1

यह मेरा समय बचाया। बढ़िया! – Govind

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