这是场景。我希望使用CKEditor作为表单上的富文本字段,但出于某种原因,我无法从textarea将内容获取到服务器,并返回到没有编码问题的页面。这里是我写的一些小样本程序,试图弄清楚发生了什么。首先,我的视图模型:为什么我不能在ASP.NET MVC中使用HtmlDecode 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。当它到达视图时,它是HTML编码的(即<p>等)。这里是形式是什么样子岗前:
pre-post http://www.matthewkimber.com/images/so/pre-post.png
这里是结果是什么在div下方的“提交”按钮:
我给自己定Visual Studio中的一个断点,它显示为空心尖括号(不在HTML元素上编码,只是字符)。
breakpoint results http://www.matthewkimber.com/images/so/dataInsideTheActionMethod.png
此,当然,是剥离下来测试。我试过对它进行编码,在视图和控制器中对它进行解码无济于事。非常感谢您的帮助!谢谢!
另见http://davidhayden.com/blog/dave/archive/2010/12/27/HtmlRawRazorViewEngine。 aspx – JTew 2011-03-01 02:05:37
好吧,我会的。谢谢! – Mateo 2011-03-01 02:06:02
不错的。在方法上不好的名字,找不到。你不认为寻找“生” – 2011-05-20 14:55:11