首页 新闻 会员 周边

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

0
悬赏园豆:30 [已关闭问题] 关闭于 2014-05-11 20:53

前台部分代码:

@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"];

}

 

使用 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

 

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

调试截图:

说明

老虎头头的主页 老虎头头 | 初学一级 | 园豆:176
提问于:2014-05-11 17:40
< >
分享
所有回答(2)
0

你可以尝试换一个参数名,不要用“editor”。 ASP.NET有很多内置参数名,若重名了就不会显示出来。

Hyman.Ro | 园豆:275 (菜鸟二级) | 2014-05-11 20:32
0

问题刚刚得到了解决。

先交代一下,我是用的是 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 requestValidationMode="2.0"/> 完整的代码如下:

<system.web>
<authentication mode="None"/>
<compilation debug="true" targetFramework="4.5"/>
<httpRuntime requestValidationMode="2.0"/>
<pages controlRenderingCompatibilityVersion="4.0"/>
</system.web>

完毕。

老虎头头 | 园豆:176 (初学一级) | 2014-05-11 20:50
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册