从Javascript调用C#函数将重定向到另一个页面

时间:2014-07-28 16:53:42

标签: c# javascript jquery asp.net-mvc asp.net-mvc-4

实际上,我有一个登录页面与facebook连接。当我点击Facebook按钮时,我想将用户重定向到我的应用程序的另一页。

我使用以下技术:ASP.NET MVC,C#,Javascript(JQuery),JQuery Mobile

登录控制器的Index.cshtml:

<head>
  <script>
    function statusChangeCallback(response) {

        if (response.status === 'connected') {
            // Logged into your app and Facebook.
            FB.api('/me', function (response) {
                var faceID = response.id;
                $("#redirectLink").attr("href", "/Home/Index?id=" + faceID);
                console.log($("#redirectLink").attr("href"));
                $("#redirectLink").trigger("click");
            });

        } else if (response.status === 'not_authorized') {
        } else {
        }
    }

    function checkLoginState() {
        FB.getLoginStatus(function (response) {
            statusChangeCallback(response);

        });
    }

  </script>
</head>

<body>
   <div id="fb-root"></div>
   <script>
    window.fbAsyncInit = function () {
     FB.init({
        cookie: true,
        appId: '******',
        xfbml: true,
        status: true, //check login status
        version: 'v2.0'
     });
    };

    (function (d, s, id) {
        var js, fjs = d.getElementsByTagName(s)[0];
        if (d.getElementById(id)) return;

        js = d.createElement(s); js.id = id;
        js.src = "//connect.facebook.net/fr_FR/all.js";
        js.async = true;
        fjs.parentNode.insertBefore(js, fjs);
    }(document, 'script', 'facebook-jssdk'));

    setTimeout(function () {
        // login();
    }, 2000);
  </script>

  <div data-role="page">

    <div data-role="ui-content">
        <fb:login-button id="facebookBtn" size="large"
             onlogin="checkLoginState();">Login with Facebook
        </fb:login-button>
        <a id="redirectLink" style="display:none;" data-ajax="false" href="#" />
     </div>
  </div>

Home.cs:

public class HomeController : Controller
{

    public ActionResult Index(long id)
    {
        return View();
    }

}

我的Home.cshtml的一部分,它不包含任何javascript:

<head>
  @Styles.Render("~/Content/css")
  @Scripts.Render("~/ScriptsJQuery")

  <meta name="viewport" content="width=device-width" />
</head>
<body>
 <div data-role="page">
    <div data-role="panel" id="userMenu" data-position="left" data-display="push" data-theme="g">
        <ul data-role="listview" data-theme="g">
            <li data-role="list-divider">Menu</li>
            <li><a data-ajax="false" href="/Home">Accueil</a></li>
            <li><a data-ajax="false" href="/CheckFridge">Mes ingr&eacute;dients</a></li>
            <li><a data-ajax="false" href="/AddRecipe">Ajouter une recette</a></li>
            <li><a data-ajax="false" href="#">D&eacute;connexion</a></li>
            <li><a data-ajax="false" href="/MyRecipes">Mes recettes</a></li>
            <li><a data-ajax="false" href="#">Partager</a></li>

        </ul>
    </div>

    <div data-role="header">
        <a id="menuBtn" href="#userMenu" style="position:absolute;"></a>
        <ul id="listMenu" style="display:none;" data-role="listview">
            <li><a href="#">@Session["user"]</a></li>
            <li><a data-ajax="false" href="@Url.Action("Disconnect","Login")">Deconnexion</a></li>
        </ul>
    </div>

    <div data-role="ui-content">
        <a data-role="button" href="@Url.Action("Index","CheckFridge")" data-theme="c" data-ajax="false" id="checkFridgeBtn">Check mon frigo</a>
        <a data-role="button" data-theme="c" id="classicSearch">Recherche classique</a>
    </div>

 </div>
</body>

问题在于登录控制器的index.cshtml中的以下标记:

如果我执行data-ajax =“true”并且我运行调试器,我注意到它转到Home控制器的Index方法但是当它转到Home的视图“index.cshtml”时控制器,它执行两个第一行(@ Styles.Render(“〜/ Content / css”),@ Scripts.Render(“〜/ ScriptsJQuery”)),然后,它不执行其余的html文档。

如果我执行data-ajax =“false”,它不会进入Home控制器,因此,它不会执行Home Controller的视图'index.cshtml'。

你有解决方案吗?

谢谢

0 个答案:

没有答案