2011-03-01 13 views
7

में एचटीएमएलडीकोड क्यों नहीं कर सकता हूं यह परिदृश्य है। मैं एक फॉर्म पर समृद्ध टेक्स्ट फ़ील्ड के लिए CKEditor का उपयोग करना चाहता हूं, लेकिन किसी भी कारण से मैं टेक्स्टरेरा से सामग्री तक सर्वर और वापस एन्कोडिंग समस्याओं के बिना सामग्री प्राप्त नहीं कर सकता। यहां क्या छोटा सा नमूना कार्यक्रम है जिसे मैंने लिखा है और यह पता लगाने के लिए लिखा है कि क्या हो रहा है। सबसे पहले, मेरे विचार मॉडल:मैं एएसपी.नेट एमवीसी 3

HomeViewModel.cs

namespace CkEditorTest.Models 
{ 
    public class HomeViewModel 
    { 
     [Required] 
     [DataType(DataType.Html)] 
     [Display(Name = "Note")] 
     public string Note { get; set; } 
    } 
} 

अब मेरी नियंत्रक:

HomeController.cs

using System.Web.Mvc; 
using CkEditorTest.Models; 

namespace CkEditorTest.Controllers 
{ 
    public class HomeController : Controller 
    { 
     public ActionResult Index() 
     { 
      return View(new HomeViewModel()); 
     } 

     [HttpPost] 
     [ValidateInput(false)] 
     public ActionResult Index(HomeViewModel model) 
     { 
      return View(model); 
     } 
    } 
} 

और अंत में, मेरे विचार:

Index.cshtml

@model CkEditorTest.Models.HomeViewModel 
@{ 
    ViewBag.Title = "CKEditor Test"; 
} 
@section head 
{ 
    <script type="text/javascript" src="@Url.Content("~/Scripts/ckeditor/ckeditor.js")"></script> 
    <script type="text/javascript" src="@Url.Content("~/Scripts/ckeditor/adapters/jquery.js")"></script> 

    <script type="text/javascript"> 
     $(document).ready(function() { 
      $("#Note").ckeditor(); 
     }); 
    </script> 
} 

<h2>CKEditor Test</h2> 

@using (Html.BeginForm()) 
{ 
    @Html.LabelFor(m => m.Note)<br /><br /> 
    @Html.TextAreaFor(m => m.Note)<br /> 
    <input type="submit" /> 
} 

@if (!String.IsNullOrEmpty(Model.Note)) 
{ 
<div id="noteText">@Model.Note</div> 
} 

कोई फर्क नहीं पड़ता कि मुझे क्या करना है, मैं अपने दृश्य पर एचटीएमएल के रूप में Model.Note संपत्ति प्रदर्शित नहीं कर सकता। जब तक यह दृश्य तक पहुंच जाता है तो यह HTML एन्कोडेड होता है (यानी < पी > आदि ...)। यहाँ किस रूप में पूर्व पोस्ट की तरह लग रहा है:

post result http://www.matthewkimber.com/images/so/posted.png

मैं निर्धारित किया है:

pre-post http://www.matthewkimber.com/images/so/pre-post.png

और यहाँ क्या परिणाम "भेजें" बटन के नीचे div में है विजुअल स्टूडियो के भीतर एक ब्रेकपॉइंट और यह नंगे कोण ब्रैकेट के रूप में दिखाता है (HTML तत्वों पर कोई एन्कोडिंग नहीं, केवल वर्ण)।

breakpoint results http://www.matthewkimber.com/images/so/dataInsideTheActionMethod.png

यह, ज़ाहिर है, परीक्षण नीचे छीन लिया है। मैंने इसे एन्कोड करने का प्रयास किया है, इसे दृश्य में और नियंत्रक में दोनों को डीकोड करने का कोई फायदा नहीं हुआ है। आपकी मदद बहुत ही सराहनिय है! धन्यवाद!

उत्तर

14

डिफ़ॉल्ट रूप से जब आप रेज़र का उपयोग करते हैं तो सबकुछ एन्कोड किया जाता है। मुझे लगता है कि आप Raw method की तलाश में हैं।

फिडलर या फायरबग का उपयोग करके प्रतिक्रिया की जांच करना भी एक अच्छा विचार होगा।

+0

इसके अलावा http://davidhayden.com/blog/dave/archive/2010/12/27/HtmlRawRazorViewEngine देखते हैं। एएसपीएक्स – JTew

+1

ठीक है, मैं हो जाऊंगा। धन्यवाद! – Mateo

+0

अच्छा एक। विधि पर बुरा नाम, खोजने के लिए हर। आप "कच्चे" की तलाश नहीं करते हैं –

2

तुम भी HtmlString उपयोग कर सकते हैं ("")

4

इस प्रयास करें:

@Html.DisplayTextFor(modelItem => item.Note) 
संबंधित मुद्दे