关于属性的IF / Else语句

时间:2014-11-24 14:24:33

标签: c# asp.net-mvc attributes

我正在开发一个项目,根据您编译项目的方式,您有一个安全且不安全的项目版本。简而言之,我想知道如何停用 ValidateAntiForgeryToken ,具体取决于我正在运行的版本。

    [AllowAnonymous]
    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult ProductInfo(ProductInfoModel review)
    {
       ...

    }

2 个答案:

答案 0 :(得分:0)

定义编译符号(可称为SECURED),然后在线检查该符号:

    [AllowAnonymous]
    [HttpPost]
#if SECURED
    [ValidateAntiForgeryToken]
#endif
    public ActionResult ProductInfo(ProductInfoModel review)
    {
      ...
    }

如果您不想将其添加到项目的属性中,还可以从MSBuild命令中定义它:

MSBuild [...] /p:DefineConstants=SECURED

答案 1 :(得分:0)

你们每个人都有独立的构建吗?如果是这样,您可以在不希望它运行的构建中添加一个符号(Project Properties - > Build),并在您不想运行的代码周围添加属性内的#IF。 / p>

#if !DISABLEFORGERY
    ...
#endif

你可以把它放在消费类的属性定义上,但是你必须在多个地方(可能)重复它。