如何在 ASP.NET MVC 4 中为特定授权用户显示特定的 html 元素
Posted
技术标签:
【中文标题】如何在 ASP.NET MVC 4 中为特定授权用户显示特定的 html 元素【英文标题】:How to show a specific html elements for specific authorized users in ASP.NET MVC 4 【发布时间】:2014-04-16 07:11:24 【问题描述】:我正在构建非常非常简单的社交网络,这是我的问题: 例如,我只想在用户页面上为拥有此个人资料的用户显示一个“更改个人资料图片”按钮,并且应该对其他授权用户隐藏。有什么建议吗?
这是我的登录方法:
[HttpPost]
public ActionResult Login(LoginModel user)
if (ModelState.IsValid)
if (IsValid(user.UserName, user.Password))
FormsAuthentication.SetAuthCookie(user.UserName, false);
return RedirectToAction("About", "User", new username = user.UserName );
else
ModelState.AddModelError("", "Login data is incorrect");
return View(user);
LoginModel:
public class LoginModel
[Required]
[DataType(DataType.Password)]
[StringLength(20, MinimumLength = 6)]
[Display(Name = "Password")]
public string Password get; set;
[Required]
[DataType(DataType.Text)]
[StringLength(100)]
[Display(Name = "User name")]
public string UserName get; set;
以及用户配置文件的路线:
routes.MapRoute(
name: "User",
url: "UserName",
defaults: new
controller = "User",
action = "About",
id = UrlParameter.Optional
);
【问题讨论】:
我的建议是更多信息和一些代码。人们如何登录?用户名和密码?你把它存放在哪里?当人们登录时,当他们从一个页面移动到另一个页面时,您如何维护他们的身份?隐藏在查询字符串中的 GUID - 会话 - cookie? 是的,这取决于。 Wee 不能在不知道您如何实施登录阶段的情况下给您答案。 谢谢。我添加了一些信息,请查看 【参考方案1】:您可以简单地从 Controller 中的模型中设置一个变量,指示您要显示 html 的特定部分。
示例:
在你的模型中添加一个属性:
public TestModel
public bool ShowContentX get;set;
在你的控制器中,填充它并将模型传递给视图:
TestModel t = new TestModel();
t.ShowContentX = true; // create check here.
return View(t);
在您的视图中,检查属性是否为true
:
@if (@model.ShowContentX)
<p>add your html</p>
【讨论】:
感谢您的建议。但在我猜测之前,我需要检查当前的个人资料页面是否属于该用户。其实这就是我想知道的,我该怎么做,或者还有其他一些方法。 我猜你的控制器中有一个操作接受属于该配置文件的用户的 ID。您可以使用当前的用户 ID / 用户名进行交叉检查,对吗?你应该把它保存在某个地方。 我当然可以这样做 if(@Model.UserModel.Username == User.Identity.Name) Html.Partial("Bla") else Html.Partial("Bla bla ") 但我真的希望有其他方法,因为我不想那样做 @AlexDefine:这应该在你的模型中,而不是在你的视图中,但我认为你没有那么多选择。 型号?你是说控制器吗?【参考方案2】:我会创建一个自定义的 html 帮助器并让帮助器函数仅在满足条件时返回输出。
在自定义帮助器中检查用户是否处于角色或授权然后从自定义 html 帮助器返回 html,否则返回空字符串。
这是一个例子:
http://blogs.technet.com/b/sateesh-arveti/archive/2013/09/06/custom-html-helper-methods-in-asp-net-mvc-4.aspx
还可以看看这篇不错的文章:
http://www.codeproject.com/Articles/649394/ASP-NET-MVC-Custom-HTML-Helpers-Csharp
希望对你有帮助。
【讨论】:
以上是关于如何在 ASP.NET MVC 4 中为特定授权用户显示特定的 html 元素的主要内容,如果未能解决你的问题,请参考以下文章
如何在 ASP.NET MVC 中为字符串设置 10 或 17 的特定长度
如何在 ASP.NET MVC 4 中为 CSP 使用动态随机数
如何在 Telerik Grid 中为 ASP.NET MVC 绑定图像