实际上,我有一个登录页面与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édients</a></li>
<li><a data-ajax="false" href="/AddRecipe">Ajouter une recette</a></li>
<li><a data-ajax="false" href="#">Dé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'。
你有解决方案吗?
谢谢