Html.BeginForm और गुण जोड़ना


139

मैं enctype="multipart/form-data"एक ऐसे फॉर्म को कैसे जोड़ूंगा जो उपयोग करके उत्पन्न होता है <% Html.BeginForm(); %>?

जवाबों:


251

HtmlAttributes के भाग के रूप में, उदा

Html.BeginForm(
    action, controller, FormMethod.Post, new { enctype="multipart/form-data"})

या आप nullबिना किसी पैरामीटर के BeginForm () के लिए एक ही डिफ़ॉल्ट लक्ष्य प्राप्त करने के लिए कार्रवाई और नियंत्रक के लिए पास कर सकते हैं :

Html.BeginForm(
    null, null, FormMethod.Post, new { enctype="multipart/form-data"})

45
एक नोट के रूप में, आप पैरामीटर और बिना पैरामीटर के एक ही डिफ़ॉल्ट लक्ष्य प्राप्त करने के लिए कार्रवाई और नियंत्रक के लिए शून्य पास कर सकते हैं।
ब्रैड रॉबिन्सन

2
@ ब्रैड: शानदार टिप्पणी! इसे एवेन्यू में शामिल किया।
चिकोडोरो

नमस्ते, मैं शिफ्ट-जेआईएस के रूप में कैसे निर्दिष्ट करता हूं जो जापानी एन्कोडिंग प्रारूप है?
गोविंद

मैं हमेशा एक्शन / कंट्रोलर को निर्दिष्ट करना पसंद करता हूं, क्योंकि आप जो करते हैं उसके आधार पर यूआरएल को हेरफेर किया जा सकता है, इसलिए अशक्त पर कार्रवाई / नियंत्रक को अप्रत्याशित व्यवहार का कारण हो सकता है।
सेसर लियोन

19

आप दृढ़ता से टाइप किए गए संस्करण के लिए निम्नलिखित सिंटैक्स का उपयोग कर सकते हैं:

<% using (Html.BeginForm<SomeController>(x=> x.SomeAction(), 
          FormMethod.Post, 
          new { enctype = "multipart/form-data" })) 
   { %>

1
वर्तमान संस्करण (RC1) में ऐसा नहीं कर सकते।
जेसन बंटिंग

जो एक विशाल बमर है :( तो हम यह कैसे कर सकते हैं? क्या हमें एक और dll की आवश्यकता है? MVC वायदा या कुछ और?
शुद्ध। क्रोम

4
हां, वास्तव में ... मेरा मानना ​​है कि वायदा असेंबली ( aspnet.codeplex.com/Release/… ) में सभी जोरदार टाइप (अभिव्यक्ति-आधारित) तरीके हैं ।
डी.पी.

@ जैसन, डीपी: निक के एक्सटेंशन पद्धति का उपयोग करके, उस तरह के हस्ताक्षर भी प्रदान करना संभव होगा। फिर भी वायदा सहित निश्चित रूप से एक बेहतर दृष्टिकोण है।
चिकोडोरो

13

मुझे पता है कि यह पुराना है, लेकिन आप एक कस्टम एक्सटेंशन बना सकते हैं यदि आपको उस फॉर्म को बार-बार बनाने की आवश्यकता है:

public static MvcForm BeginMultipartForm(this HtmlHelper htmlHelper)
{
    return htmlHelper.BeginForm(null, null, FormMethod.Post, 
     new Dictionary<string, object>() { { "enctype", "multipart/form-data" } });
}

उपयोग तो बस बन जाता है

<% using(Html.BeginMultipartForm()) { %>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.