IIS6+MVC4+IE浏览器,又出问题了,求大神帮忙解决啊
先说说配置:
服务器:Windows Server 2003
平台:IIS6.0
开发环境:ASP.NET MVC4 (VS 2013 RC版本编译)
按招网上的流程完成了MVC4在Windows Server 2003 上的补丁安装和部署。
一切都OK 木有问题了 网站也可以访问了。
上出现问题的源码:
后台控制器代码:
.cshtml文件中的代码
上面的代码没啥难度吧,好 现在开始说问题
先看看Chrome这种牛逼的浏览器

通过Console查看一下这个Ajax.BeginForm生成的form表单中action的提交地址。Chrome一切正常
再来看看蛋疼的IE浏览器

奇葩了啊~~~为什么 写的Ajax.BeginForm("Register") 设置的是Register这个Action
而最终在IE中拿到的form.action却没有了Register....
继续往后看
现在把IE内核调整到IE7模式

空的,在IE7模式下action居然是空的,但提交却又能成功,仔细调试了一下,发现是jQuery帮了个忙
看图:

原来jQuery在判断到$.ajax的url为空字符串或未定义时,会自动为url设置成当前页面的地址
而我这里刚好提交的地址又和页面地址相同的,所以产生了一个巧合性的成功。。。。
大神们,问题您看明白了吗?? 这奇葩的IE 在搞什么呀。。。难道是MVC4的问题??? 该怎么去解决~~!~!~!
经过测试,发现 如果把项目部署到IIS7及以上的版本,就不存在这些问题。
求解决方案,拜托了 各位大神们~~

服务器:Windows Server 2003
平台:IIS6.0
开发环境:ASP.NET MVC4 (VS 2013 RC版本编译)
按招网上的流程完成了MVC4在Windows Server 2003 上的补丁安装和部署。
一切都OK 木有问题了 网站也可以访问了。
上出现问题的源码:
后台控制器代码:
public class HomeController : Controller
{
/// <summary>
/// 注册页面
/// </summary>
/// <returns></returns>
public ActionResult Register()
{
return View();
}
/// <summary>
/// 注册页面的数据提交视图
/// </summary>
/// <param name="user"></param>
/// <returns></returns>
[HttpPost]
public JsonResult Register(RegisterUser user)
{
UserModel um = new UserModel();
return Json(um.RegisterUser(user), JsonRequestBehavior.AllowGet);
}
}
.cshtml文件中的代码
@model HCP.Models.RegisterUser
@using (Ajax.BeginForm("Register", null, new AjaxOptions()
{
OnBegin = "regBegin",
OnSuccess = "regSuccess",
OnComplete = "regComplete"
}, new Dictionary<string, object>()
{
}))
{
<div class="regform">
<div class="ctrlleft"><span>*</span>用户名:</div>
<div class="ctrlcenter">@Html.TextBoxFor(e => e.UserName)</div>
<div class="ctrlright">4-18位字符,允许字母、数字、下划线,不区分大小写</div>
</div>
<div class="regform">
<div class="ctrlleft"><span>*</span>邮箱:</div>
<div class="ctrlcenter">@Html.TextBoxFor(e => e.Email)</div>
<div class="ctrlright">请输入您的常用邮箱,我们将在下一步验证您的邮箱,方便您以后找回密码</div>
</div>
<!--
部分代码省略... 很容易看出来吧,就是一个普通的Ajax.BeginForm表单,
用到了jquery.unobtrusive-ajax.js进行ajax提交数据
-->
}
上面的代码没啥难度吧,好 现在开始说问题
先看看Chrome这种牛逼的浏览器

通过Console查看一下这个Ajax.BeginForm生成的form表单中action的提交地址。Chrome一切正常
再来看看蛋疼的IE浏览器

奇葩了啊~~~为什么 写的Ajax.BeginForm("Register") 设置的是Register这个Action
而最终在IE中拿到的form.action却没有了Register....
继续往后看
现在把IE内核调整到IE7模式

空的,在IE7模式下action居然是空的,但提交却又能成功,仔细调试了一下,发现是jQuery帮了个忙
看图:

原来jQuery在判断到$.ajax的url为空字符串或未定义时,会自动为url设置成当前页面的地址
而我这里刚好提交的地址又和页面地址相同的,所以产生了一个巧合性的成功。。。。
大神们,问题您看明白了吗?? 这奇葩的IE 在搞什么呀。。。难道是MVC4的问题??? 该怎么去解决~~!~!~!
经过测试,发现 如果把项目部署到IIS7及以上的版本,就不存在这些问题。
求解决方案,拜托了 各位大神们~~


...全文
相关推荐
Win2003 IIS浏览ASP提示无法找到该页的解决办法
"Win2003 IIS在运行ASP网站时出现'无法找到该页'的错误,但HTML静态页面能正常访问。问题出在IIS6.0的Web服务扩展设置上,需要启用Active Server Pages、Web
telerik mvc扩展组件的使用1
**资源合并**:Telerik MVC扩展支持在IIS环境下合并资源,减少HTTP请求,加快页面加载速度。但在IIS6或更早版本中,可能需要额外的配置或第三方模块来实现这一功能。
SignalR Self Host+MVC等多端消息推送服务(一)
SignalR框架具备良好的兼容性,支持旧版IE浏览器在内的多种客户端。它的实现原理主要基于WebSocket协议,当浏览器不支持WebSocket时,SignalR会自动回退到其他类似长轮询的技术。
ASP.NET页面在IE缓存的清除办法
***页面在IE缓存清除的知识点主要包括了浏览器缓存机制、页面更新问题以及解决这些更新问题的两种方法。
FCK在asp.net和MVC中的使用实例(含源文件)
**IIS6.0配置** 在IIS6.0环境下,可能需要配置ISAPI筛选器以支持ASP.NET MVC。


