2011-03-01 6 views
7

다음은 시나리오입니다. 양식의 서식있는 텍스트 필드에 CKEditor을 사용하고 싶지만 어떤 이유에서든 텍스트 영역에서 서버로 내용을 가져올 수없고 인코딩 문제없이 페이지로 돌아갈 수 없습니다. 다음은 내가 진행하고있는 일을 파악하기 위해 작성한 작은 샘플 프로그램입니다. 첫째, 내보기 모델 :ASP.NET MVC 3에서 HtmlDecode를 사용할 수없는 이유

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> 
} 

는 상관없이 내가 뭘, 내가보기에 HTML로 Model.Note 속성을 표시 할 수 없습니다. 보기에 도달하면 HTML로 인코딩됩니다 (즉, <p> 등). 여기에 양식을 미리 후 모습입니다 : 내가 설정 한

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

: 여기

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

그리고하는 결과가 "제출"버튼 아래에 사업부에 무엇인가 비주얼 스튜디오 내에서 중단 점과 그것은 벌어 꺽쇠 괄호 (HTML 요소에 인코딩, 그냥 문자)로 표시됩니다.

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

은 물론, 벗었 테스트입니다. 나는 그것을 인코딩 해 보았는데, 뷰와 컨트롤러 모두에서 아무 쓸모가 없다. 당신의 도움은 대단히 감사합니다! 감사!

답변

14

기본적으로 면도기를 사용할 때 모든 것이 인코딩됩니다. 나는 Raw method을 찾고 있다고 생각합니다.

또한 Fiddler 또는 Firebug를 사용하여 응답을 확인하는 것이 좋습니다.

+0

는 또한 http://davidhayden.com/blog/dave/archive/2010/12/27/HtmlRawRazorViewEngine를 참조하십시오. aspx – JTew

+1

글쎄, 내가있을거야. 감사! – Mateo

+0

좋습니다. 방법에 대한 나쁜 이름은 찾을 수 없습니다. 당신은 "날것"을 찾지 않을 것이라고 생각합니다. –

2

또한 HtmlString을 사용할 수 있습니다 ("")

4

이 시도 :

@Html.DisplayTextFor(modelItem => item.Note) 
관련 문제