Javascript 我的问题是,我想在登录后在母版页布局中启用html元素,但我可以';T
这就是我的全部代码。我的问题是,我想在登录后在母版页布局中启用html元素。但我不能Javascript 我的问题是,我想在登录后在母版页布局中启用html元素,但我可以';T,javascript,html,asp.net,asp.net-mvc,Javascript,Html,Asp.net,Asp.net Mvc,这就是我的全部代码。我的问题是,我想在登录后在母版页布局中启用html元素。但我不能 <li> <a href="@Href("~/Admin/")" id="btn_admin">Admin</a> </li> 在sign按钮中,单击它之后,我想向管理员显示以下代码在母版页中的同一脚本中 $(document).ready(function () { $("#btn_submit").click(functio
<li>
<a href="@Href("~/Admin/")" id="btn_admin">Admin</a>
</li>
在sign按钮中,单击它之后,我想向管理员显示以下代码在母版页中的同一脚本中
$(document).ready(function () {
$("#btn_submit").click(function () {
var user = {};
user.Email = $('#username').val();
user.Password = $('#password').val();
$.ajax({
url: 'https://localhost:44300/api/auth/Login',
type: 'POST',
data: user,
success: function (response) {
console.log(response);
if (response.Succeeded) {
$.cookie('UserId', response.UserId, { expires: 7, path: '/' });
$.cookie('Token', response.Token, { expires: 7, path: '/' });
//$("#btnLogin").fadeOut();
document.getElementById('btnLogin').style.display = "none";
document.getElementById('btn_admin').style.display = "block";
window.location.href = '/Home';
}
else {
alert(response.Message);
}
// setCookie("UserId", response.UserId);
//setCookie("Token", response.Token);
},
error: function () {
console.log('Error in Operation');
}
});
});
点击后,我想显示管理员
您在这里成功地做到了这一点:
document.getElementById('btn_admin').style.display = "block";
但是,接下来要做的就是重定向用户:
window.location.href = '/Home';
因此,当用户导航到另一个页面时,对页面状态所做的任何更改都将丢失。毕竟,当用户不再在该页面上时,如何期望链接仍然可见
在概念上退一步,听起来你想要的可以描述为:
在主布局上,如果用户当前已登录,则显示“管理”链接
这是服务器端逻辑,而不是客户端逻辑。大概(希望)在https://localhost:44300/api/auth/Login
您设置了一些跟踪用户的方法。ASP.NET MVC具有内置的身份验证和授权功能,因此我假设您正在使用该功能或合理的替代功能。在这种情况下,您可以在布局视图中执行以下操作:
@if (Request.IsAuthenticated) {
<li>
<a href="@Href("~/Admin/")" id="btn_admin">Admin</a>
</li>
}
@if (Request.IsAuthenticated) {
@if (User.IsInRole("Admin")) {
<li>
<a href="@Href("~/Admin/")" id="btn_admin">Admin</a>
</li>
}
}
(顺便说一句,这不是一种安全措施。我假设你不这么认为,但为了完整起见,任何未来的读者都应该绝对意识到隐藏链接并不能阻止用户访问页面。)
由于用户是从一个页面导航到另一个页面,服务器端代码将在每次页面加载时重新调用。因此,在本例中,这确实是放置这些条件的理想位置,这些条件在显示页面内容之前检查授权。我不清楚您试图描述的是什么问题。此代码中的哪个特定操作失败或产生意外结果?该操作的目标HTML是什么?请具体说明问题。这是我在母版页中的html代码。它正在工作。这意味着,如果我第一次运行时,锚标记不可见。当我点击不起作用的符号按钮时,我想要那个锚定标签。单击“登录”后,它也不可见。当我将其重定向到不同的页面时,母版页会自动加载。这就是脚本文件再次加载的原因。
@if (Request.IsAuthenticated) {
@if (User.IsInRole("Admin")) {
<li>
<a href="@Href("~/Admin/")" id="btn_admin">Admin</a>
</li>
}
}
document.getElementById('btn_admin').style.display = "none";