mvc 5 使用 ckeditor 但是后台不能成功取值


前台部分代码:


 @using (Html.BeginForm("Submit", "DeliverSP", FormMethod.Post, new { @class = "form-horizontal", role = "form" }))
{

<dt>内容:</dt>
<dd>
<textarea name="editor" id="editor"></textarea>
<script type="text/javascript">
window.onload = function () { CKEDITOR.replace('editor'); };
var editor = CKEDITOR.replace('editor');
CKFinder.SetupCKEditor(editor, '/ckfinder/');
</script>
</dd>
<dt>操作:</dt>
<dd><input type="submit" class="btn btn-default" value="提交" /></dd>

}

后台部分代码:


 [HttpPost]
[ValidateInput(false)]
public ActionResult Submit()
{
int text = Request.Params["editor"];
return View();
}

使用 fiddler 捕获到的请求构造:


 POST /DeliverSP/Submit/87 HTTP/1.1

Host: localhost:22844
Connection: keep-alive
Content-Length: 75
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Origin: http://localhost:22844
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Referer: http://localhost:22844/DeliverSP/Submit/87
Accept-Encoding: gzip,deflate
Accept-Language: en-US,en;q=0.8,zh-CN;q=0.6,zh;q=0.4
Cookie: name=你好; type=1

wsId=87&domain=www.baidu2.com&hfTemNum=7&editor=%3Cp%3E1111%3C%2Fp%3E%0D%0A

可以看到,请求里面是提交了ckeditor编辑器的内容: editor=%3Cp%3E1111%3C%2Fp%3E%0D%0A

但是,在后台却获取不到值为什么呢?

调试截图:
截图

asp.net-mvc c# ckeditor

nigel 10 years, 5 months ago

问题刚刚得到了解决。
先交代一下,我是用的是 mvc 5 ,我是第一次使用这个框架,所以对一些内部的机制还不是很清楚。
出现我上面阐述的这个错误是因为 “认识ASP.NET MVC的5种AuthorizationFilter”(链接 http://blog.csdn.net/kangjiaaa/article/details/17718843 ) 中的
ValidateInputAttribute 检验用户请求机制造成的。如果想了解,可以自己去看看。
解决办法是:(如下代码)
后台部分代码:
[HttpPost]
[ValidateInput(false)]
public ActionResult Submit()
{
int text = Request.Params["editor"];
}

此处我虽然使用了 [ValidateInput(false)] 但还是继续出错,是因为需要配合 web.config 中的一个配置:
打开根目录的 web.config 在 system.web 节点下加入 <httpruntime> </httpruntime> 完整的代码如下:
<system.web>
<authentication> </authentication>
<compilation targetframework="4.5"> </compilation>
<httpruntime> </httpruntime>
<pages> </pages>
</system.web>
完毕。

爆钓王希卡利 answered 10 years, 5 months ago

Your Answer