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.