आपके पास कुछ विकल्प हैं।
मॉडल पर इस गुण को प्रत्येक संपत्ति में जोड़ें जो आपको HTML - सर्वश्रेष्ठ विकल्प की अनुमति देने की आवश्यकता है
using System.Web.Mvc;
[AllowHtml]
public string SomeProperty { get; set; }
नियंत्रक कार्रवाई पर सभी HTML को अनुमति देने के लिए इस विशेषता को जोड़ें
[ValidateInput(false)]
public ActionResult SomeAction(MyViewModel myViewModel)
Web.config में जानवर बल - निश्चित रूप से अनुशंसित नहीं है
Web.config फ़ाइल में, टैग के भीतर, httpRuntime तत्व को विशेषता requestValidationMode = "2.0" के साथ डालें। पृष्ठ तत्व में भी validateRequest = "false" विशेषता जोड़ें।
<configuration>
<system.web>
<httpRuntime requestValidationMode="2.0" />
</system.web>
<pages validateRequest="false">
</pages>
</configuration>
अधिक जानकारी: http://davidhayden.com/blog/dave/archive/2011/01/16/AllowHtmlAttributeASPNETMVC3.aspx
उपर्युक्त डिफ़ॉल्ट मॉडलबिंडर के उपयोग के लिए काम करता है।
कस्टम मॉडलबिंडर
ऐसा प्रतीत होता है कि ऊपर दिए कोड में बाइंडिंग कॉन्टेक्स्ट.वैल्यूप्रोइडर.जीटवैल्यू () को कॉल करने से डेटा हमेशा मान्य होता है, फिर चाहे वह किसी भी विशेषता का हो। ASP.NET MVC स्रोतों में खोदने से पता चलता है कि DefaultModelBinder पहले जाँचता है कि क्या अनुरोध सत्यापन आवश्यक है और फिर बाइंडिंग कॉन्टेक्स्ट को कॉल करें।
दुर्भाग्य से हम किसी भी फ्रेमवर्क कोड का उपयोग नहीं कर सकते क्योंकि यह सील है, निजी है या जो कुछ भी अज्ञानी देवों को खतरनाक सामान करने से बचाने के लिए है, लेकिन वर्कहॉल कस्टम मॉडल बाइंडर बनाने में बहुत मुश्किल नहीं है जो AllowHtml और ValidateInput विशेषताओं का सम्मान करता है:
public class MyModelBinder: IModelBinder
{
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
// First check if request validation is required
var shouldPerformRequestValidation = controllerContext.Controller.ValidateRequest && bindingContext.ModelMetadata.RequestValidationEnabled;
// Get value
var valueProviderResult = bindingContext.GetValueFromValueProvider(shouldPerformRequestValidation);
if (valueProviderResult != null)
{
var theValue = valueProviderResult.AttemptedValue;
// etc...
}
}
}
अन्य आवश्यक टुकड़ा एक असमान मूल्य को पुनः प्राप्त करने का एक तरीका है। इस उदाहरण में हम ModelBindingContext वर्ग के लिए एक एक्सटेंशन विधि का उपयोग करते हैं:
public static class ExtensionHelpers
{
public static ValueProviderResult GetValueFromValueProvider(this ModelBindingContext bindingContext, bool performRequestValidation)
{
var unvalidatedValueProvider = bindingContext.ValueProvider as IUnvalidatedValueProvider;
return (unvalidatedValueProvider != null)
? unvalidatedValueProvider.GetValue(bindingContext.ModelName, !performRequestValidation)
: bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
}
}
इस बारे में अधिक जानकारी http://blogs.taiga.nl/martijn/2011/09/29/custom-model-binders-and-request-validation/ पर