Вернуть JavaScript (). 4 добрых дела - 1 злое действие! - PullRequest
2 голосов
/ 21 октября 2009

Плохой «возврат JavaScript» выглядит так:

  1. Это выбранная ссылка действия.

    Ajax.ActionLink("Sign Out", "LogOff", "Account", new AjaxOptions { })
    
  2. Это действие.

    public ActionResult LogOff()   
    {      
        FormsAuth.SignOut();   
        return JavaScript("ClearDisplayName()");  
    } 
    
  3. JavaScript никогда не вызывается!

Дополнительная информация:

Все функции javascript находятся в файле .js.

Четыре других действия в том же файле успешно выполняют return JavaScript(...).

Я проверил четыре рабочих действия, выполнив return JavaScript("ClearDisplayName()") и все они успешно звонят ClearDisplayName().

Я проверил неудачное действие, выполнив return JavaScript("OtherKnownWorkingJava()") без удачи.

Есть идеи для этого странного поведения?

Я заметил, что все успешные действия сначала проходят через просмотр. Проблемного действия нет, оно исходит непосредственно от ActionLink.

Ответы [ 3 ]

1 голос
/ 22 октября 2009

После того, как я бросил немного грязи против этой проблемы, вот как я смог позвонить 'вернуть JavaScript ("ClearDisplayName")'.

Вместо того, чтобы пытаться это сделать, верните JavaScript ("ClearDisplayName") из LogOff действие, я перенаправил на другое действие, LogOffA , и сделал там возврат JavaScript ("ClearDisplayName"), и это сработало !!

    public ActionResult LogOffA()
    {
        return JavaScript("ClearDisplayName()");
    }

    public ActionResult LogOff()
    {
        FormsAuth.SignOut();
        return RedirectToAction("LogOffA", "Account");
        //return JavaScript("ClearDisplayName()");
    }
0 голосов
/ 21 октября 2009

Ajax.ActionLink также вызывает другие действия?

Я сомневаюсь, что Ajax.ActionLink обработает возврат JavaScript. Если это так, вы либо сами обрабатываете результат (используя eval (response)), либо избегаете использования Ajax.ActionLink, либо вместо этого возвращаете представление, которое $ (Документ) .ready (функция () {<% = ViewData [ "jsfunc"]%>};); - это, скорее всего, будет обработано, хотя вам понадобится jQuery.

0 голосов
/ 21 октября 2009

Правильно ли определен FormsAuth? Разве это не должно быть FormsAuthentication?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...