0

我正在使用带有剃须刀的 mvc3 我有一个用于注销用户的按钮,我使用以下代码 shared/_layout.cshtml

      //button
     <div class="button"><a href="#" id="Logout" title="Logout">


          <div class="Logout"></div>Logout</a></div>
    <script>
          $("#Logout").bind("click", function () {
window.location.href = '@Url.Action("LogOn", "Account")'; 
});
    </script>

accountcontroller.cs

 public ActionResult Logout()
        {
          FormsAuthentication.SignOut();
          return RedirectToAction("LogOn");
        }

这会将我引导至错误页面

http://localhost:XXXX/%3C%=%20Url.Action(%22Logout%22,%20%22Account%22)%20%%3E

Server Error in '/' Application.

HTTP Error 400 - Bad Request.

Version Information: ASP.NET Development Server 11.0.0.0

谁能告诉我哪里出错了?请帮助按钮单击事件以进行注销更改。

更新:

 http://localhost:8436/&#47;Account&#47;Logout


enter code here
Server Error in '/' Application.

A potentially dangerous Request.Path value was detected from the client (&).

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.Web.HttpException: A potentially dangerous Request.Path value was detected from the client (&).

Source Error: 

    An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

    Stack Trace: 


    [HttpException (0x80004005): A potentially dangerous Request.Path value was detected from the client (&).]
       System.Web.HttpRequest.ValidateInputIfRequiredByConfig() +9673044
       System.Web.ValidateRequestExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +35
       System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155
4

2 回答 2

1

Razor 语法使用 and@字符而不是<%,所以使用它,一切都应该可以正常工作

$("#Logout").bind("click", function () { 
    window.location.href = '@Url.Action("LogOn", "Account")'; // assuming this is the correct action you want to use for the logout button
});

您可能还想从 jQuery 切换$("#Logout").bind$("#Logout").click

于 2013-08-10T10:38:36.063 回答
1

你为什么不试试ajax jquery调用

<a href="#" id="Logout" onclick=="return LogOut();" title="Logout">

function LogOut() {
$.ajax({
                            cache:true,
                            type: "POST",
                            url: "@(Url.Action("LogOut", "Account"))",
                            success: function (data) {
                                                window.location.reload();
                                             },
                            error:function (xhr, ajaxOptions, thrownError){

                                              }, 
                            complete: function() {   } 

                           }); // end ajax code
                   }

这可能看起来很长,但应该可以!

于 2013-08-10T12:19:14.577 回答