Javascript 在asp.net mvc应用程序中使用href属性重定向不起作用

Javascript 在asp.net mvc应用程序中使用href属性重定向不起作用,javascript,jquery,asp.net,asp.net-mvc,url,Javascript,Jquery,Asp.net,Asp.net Mvc,Url,我使用如下导航: <a href="/MyMessages/?messageId=1"> First message </> 但它在浏览器中被编码,地址是: localhost:52500/MyMessages/%3FmessageId=1 mvc路由失败: “/”应用程序中出现服务器错误 潜在危险的请求。从中检测到路径值 客户(?) 描述:在执行过程中发生未处理的异常 当前的web请求。请查看堆栈跟踪以了解更多信息 有关错误的信息及其在代码中的来源 异常详细信息:S

我使用如下导航:

<a href="/MyMessages/?messageId=1"> First message </>
但它在浏览器中被编码,地址是:

localhost:52500/MyMessages/%3FmessageId=1
mvc路由失败:

“/”应用程序中出现服务器错误

潜在危险的请求。从中检测到路径值 客户(?)

描述:在执行过程中发生未处理的异常 当前的web请求。请查看堆栈跟踪以了解更多信息 有关错误的信息及其在代码中的来源

异常详细信息:System.Web.HttpException:潜在危险 请求。从客户端检测到路径值(?)

源错误:

在执行过程中生成了未处理的异常 当前web请求。关于货物来源和位置的信息 可以使用下面的异常堆栈跟踪来识别异常

堆栈跟踪:

[HttpException(0x80004005):潜在危险的请求。路径 从客户端检测到值(?)]
System.Web.HttpRequest.validateInputFrequeryByConfig()+9807692
System.Web.PipelineStepManager.ValidateHelper(HttpContext上下文)+53

但当我只是通过深度链接导航时

localhost:52500/MyMessages/?messageId=1
一切正常


如何避免我的浏览器对我的url进行编码并防止出现错误?

如果您在事件处理程序中执行的最后一项操作是转到正确的href,请删除:-

location.pathname = $(this).attr('href');
并确保您不
preventDefault
返回false

正常情况下,单击事件后,浏览器将使用
href
关闭
锚定
重定向


用户也可以选择停留在页面上(弹出窗口有是/否按钮, 在防止违约后(如果是脏的),然后如果他选择 再次导航,同样的情况也会发生

尝试以下方法:-

$('a').on('click', function (event) {
    if(dirty){
       event.preventDefault();
       $('#yes').attr('href', $(this).attr('href'));
       $('#popup').show();
    }
});

并创建
#yes
作为锚定。

如果在事件处理程序中执行的最后一项操作是转到正确的href,则删除:-

location.pathname = $(this).attr('href');
并确保您不
preventDefault
返回false

正常情况下,单击事件后,浏览器将使用
href
关闭
锚定
重定向


用户也可以选择停留在页面上(弹出窗口有是/否按钮, 在防止违约后(如果是脏的),然后如果他选择 再次导航,同样的情况也会发生

尝试以下方法:-

$('a').on('click', function (event) {
    if(dirty){
       event.preventDefault();
       $('#yes').attr('href', $(this).attr('href'));
       $('#popup').show();
    }
});

然后创建
#yes
作为锚定。

这是有效的。但是,我的实现要求我阻止默认设置,这样浏览器就不会生成弹出窗口。有没有办法解决这个问题?生成弹出窗口?你能再解释一下吗?我将表单标记为脏的,并生成一个自定义弹出窗口,通知用户导航时有未保存的更改。为了让它起作用(不是显示通用浏览器弹出窗口),而是显示我自己的自定义弹出窗口,我必须防止默认。如果默认值是脏的,为什么不阻止它呢。用户也可以选择停留在页面上(弹出窗口有“是/否”按钮,如果是脏的,则防止默认设置),然后如果他选择再次导航,同样的情况也会发生。但是,我的实现要求我阻止默认设置,这样浏览器就不会生成弹出窗口。有没有办法解决这个问题?生成弹出窗口?你能再解释一下吗?我将表单标记为脏的,并生成一个自定义弹出窗口,通知用户导航时有未保存的更改。为了让它起作用(不是显示通用浏览器弹出窗口),而是显示我自己的自定义弹出窗口,我必须防止默认。如果默认值是脏的,为什么不阻止它呢。用户也可以选择停留在页面上(弹出窗口有“是/否”按钮,如果是脏的,则在阻止默认设置之后),然后如果他选择再次导航,同样的情况也会发生