小编Yan*_*vin的帖子

如何避免重复授权代码逻辑

我编写了一个从System.Web.Mvc.AuthorizeAttribute派生的自定义授权属性.我正在从我的控制器成功使用它来限制对某些功能的访问.

public class ArticleController : Controller
{
    [CustomAuthorize(Role.Administrator)]
    public ActionResult Delete(int id)
    {
       // ...
    }
}
Run Code Online (Sandbox Code Playgroud)

这很好.现在我想根据相同的授权逻辑显示或隐藏HTML元素.例如,在我的视图"文章"中,如果用户不是管理员,我想隐藏操作按钮"删除".我写过类似的东西:

<ul id="menu">
   <li>@if (User.IsInRole(Role.Administrator)) { 
          @Html.ActionLink("Delete", "Delete", "Article", new { id = article.ID }, null)
       } </li>
</ul>
Run Code Online (Sandbox Code Playgroud)

它工作正常,但它创建了代码逻辑重复,因为我需要指定两次必要的信用来执行操作:

  • 在控制器中阻止或允许操作.
  • 在视图中显示或隐藏操作链接.

避免这种重复的最佳方法是什么?有没有办法从视图中重用我的自定义授权属性?

asp.net-mvc authorization asp.net-mvc-3

5
推荐指数
1
解决办法
484
查看次数

正则表达式字符串开头/字符串结尾元字符的助记提示

众所周知,正则表达式的功能非常强大。但众所周知,语法有点尴尬。

例如,每次使用它们时,我都会问自己哪个 和^$string的开头(分别是string 的结尾)元字符。

我知道快速的谷歌搜索或简单的备忘单可以回答这个问题,但我想知道是否有人知道一个好的助记技巧。

regex mnemonics

5
推荐指数
1
解决办法
973
查看次数

VS 2010和MBUnit如何只运行一次测试

我安装了Gallio/MbUnit,并且正在使用VS 2010 RC,我希望能够在TestFixture内运行单个单元测试或仅运行所有单元测试,而不是每次调试时都运行整个项目中的所有测试.你如何在VS 2010中做到这一点?

c# mbunit unit-testing visual-studio-2010

4
推荐指数
1
解决办法
3246
查看次数

是否有MBUnit属性按照定义的顺序运行Row测试

我试过谷歌搜索但没有找到任何东西.基本上,我想按照我定义的顺序运行每一行.例如,如果我有这个:

[Row("a")]
[Row("b")]
[Row("c")]
[Test]
public void Test(string s)...
Run Code Online (Sandbox Code Playgroud)

我想确保在测试B之前执行测试A,并且在测试C之前执行测试B.

c# mbunit unit-testing gallio data-driven-tests

4
推荐指数
1
解决办法
1508
查看次数

跑车C =新司机(); 在C#中

假设我们有两个类Car和Driver,
我们可以制作像这样的对象

Car c=new Driver();
Run Code Online (Sandbox Code Playgroud)

并且能够调用汽车类的成员而不是驱动程序类的成员为什么和什么时候??

c# class object

0
推荐指数
1
解决办法
371
查看次数