首页 新闻 会员 周边 捐助

MVC :Ajax.BeginForm()提交表单乱码现象

1
悬赏园豆:15 [已解决问题] 解决于 2012-07-26 14:26

在使用Ajax.BeginForm()提交表单时出现了中文乱码现象,用Hmtl.BeginForm()就没事。

 @ using (Ajax.BeginForm( "Config" , "Configs" , new AjaxOptions
{
    HttpMethod = "Post" ,
    OnSuccess = "Success" ,
    OnFailure = "Failure"
}))
    {
         @Html.TextBoxFor(model=>model.EmailService.CredentialID, new { style = "width:300px" })
  。。。。用Model直接绑定的
    }

////脚本提示执行结果
< script language="javascript" type ="text/javascript">
    function Success() {
        alert( "修改成功" );
    }
    function Failure() {
        alert( "修改失败!" );
    }


后台controller中的post action获取到数据时直接就是乱码了。

以前用JQuery中的ajax方法时是在前台用escapte方法编码,然后在后台用Server.Decode解码的。像上面这种model绑定到控件的方法不知道一般怎么做?

问题补充:

现在发现应该是

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js"

和web.config中的编码gb2312冲突了,不知道怎么解决呢?

 

最后找到了解决方案:

http://www.cnblogs.com/janes/archive/2012/07/10/2583201.html

敬YES的主页 敬YES | 菜鸟二级 | 园豆:490
提问于:2012-06-15 17:18
< >
分享
最佳答案
0

我写了个测试程序就是没有乱码出来,真是奇怪,不如你站内短信我你的邮箱,我把测试程序发给你吧。

收获园豆:9
today4king | 老鸟四级 |园豆:3499 | 2012-06-15 17:52

发送到站内信了,多谢今昭

敬YES | 园豆:490 (菜鸟二级) | 2012-06-15 17:57

@丫头小静(Cathy): 

邮件你了,可以在里面模拟你的情况,最重要的是能让乱码再现。

today4king | 园豆:3499 (老鸟四级) | 2012-06-15 18:40

@今昭: 太感谢了,找到原因了,

view里面这几行:

@*<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>*@
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>

和web.config里面的配置有冲突

<globalization fileEncoding="gb2312" requestEncoding="gb2312" responseEncoding="gb2312" culture="zh-CN"/>
敬YES | 园豆:490 (菜鸟二级) | 2012-06-15 18:56

@丫头小静(Cathy): 不客气,解决问题了就好。

today4king | 园豆:3499 (老鸟四级) | 2012-06-15 22:32

@今昭: 

我找到原因了,可是没有解决

敬YES | 园豆:490 (菜鸟二级) | 2012-06-29 19:20

@丫头小静(Cathy): 为什么?具体一点。

today4king | 园豆:3499 (老鸟四级) | 2012-07-01 11:47
其他回答(2)
0

用Ajax.BeginForm编码方式是MVC自己处理的,一般不用自己处理

建议用开发者工具(如firebug等)查看一下提交的值是什么,确实是客户端还是服务器端的问题,另外还有一种可能就是这个页面本身的编码不对,这种情况可以新建一个页面,然后把代码复制过去试试

artwl | 园豆:16736 (专家六级) | 2012-06-15 17:30
0

1. 将这个页面的编码设置为utf-8:<meta charset="utf-8">

2. 如果解决不了问题,通过js设置一下.ajax的contentType。

$.ajaxSetup({
    contentType: 'application/json; charset=utf-8'
});
收获园豆:6
dudu | 园豆:30925 (高人七级) | 2012-06-15 17:31

dudu老大,我们的编码全站都是gb2312的

支持(0) 反对(0) 敬YES | 园豆:490 (菜鸟二级) | 2012-06-15 17:37

@丫头小静(Cathy): 那应该就是gb2312的原因,.ajax默认用的是utf-8,试试下面的代码:

$.ajaxSetup({
    contentType: 'application/json; charset=gb2312'
});

 

 

支持(0) 反对(0) dudu | 园豆:30925 (高人七级) | 2012-06-15 17:41

@dudu: 应该不是这个问题,我测试了gb2312的方式也么有出现乱码,真是奇怪。

支持(0) 反对(0) today4king | 园豆:3499 (老鸟四级) | 2012-06-15 17:50

@丫头小静(Cathy): 

stackoverflow上提到了这个问题的解决方法

@{var attributes = new Dictionary<string, Object>();
   attributes.Add("accept-charset","gb2312");
    using (Ajax.BeginForm("Config" , "Configs" , new AjaxOptions
    {
        HttpMethod = "Post" ,
        OnSuccess = "Success" ,
        OnFailure = "Failure"
    }, attributes))
    {
    }
}
支持(0) 反对(0) dudu | 园豆:30925 (高人七级) | 2012-06-15 18:36

@丫头小静(Cathy): 问题还没解决?

支持(0) 反对(0) dudu | 园豆:30925 (高人七级) | 2012-06-26 13:35

@dudu: 出现乱码时,程序是在Visual Studio中运行的,还是在IIS中运行的?

支持(0) 反对(0) dudu | 园豆:30925 (高人七级) | 2012-07-10 11:12
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册