标签: custom-attributes

如何将方法参数插入自定义属性

我有一个名为AuthoriseAttribute的自定义属性,其构造函数如下所示:

public AuthoriseAttribute(int userId)
{
  .. blah
}
Run Code Online (Sandbox Code Playgroud)

这与一个这样的方法一起使用GetUserDetails():

[Authorise(????????)]
public UserDetailsDto GetUserDetails(int userId)
{
  .. blah
}
Run Code Online (Sandbox Code Playgroud)

在运行时,Authorize属性的存在会导致执行某些授权代码,这需要用户的ID.显然,这可以从GetUserDetails()方法的参数中提取,但这意味着授权代码取决于方法的参数被赋予特定名称.

我希望能够将userId参数的实际值传递给属性,以便授权代码使用传递给属性的值(即不是方法参数),其名称已知.

像这样的东西(不起作用):

[Authorise(userId)]
public UserDetailsDto GetUserDetails(int userId)
{
  .. blah
}
Run Code Online (Sandbox Code Playgroud)

这样的事情可能吗?

c# custom-attributes

13
推荐指数
2
解决办法
1万
查看次数

字段上的C#属性

如何在程序集中的任何位置设置属性,然后在整个程序集中反映这些字段属性并获取/设置属性附加的字段值?

.net custom-attributes

12
推荐指数
1
解决办法
9392
查看次数

htmlpurifier自定义属性

如何在HtmlPurifier中允许自定义(html5 data-*)属性?

输入:

<img src="/my.jpg" data-type="5" alt="" />
Run Code Online (Sandbox Code Playgroud)

导致错误:

Attribute 'data-type' in element 'img' not supported 
(for information on implementing this, see the support forums) 
Run Code Online (Sandbox Code Playgroud)

HtmlPurifier选项设置为:

'HTML.AllowedAttributes' => array('img.src', 'a.href', 'img.data-type')
Run Code Online (Sandbox Code Playgroud)

html5 custom-attributes htmlpurifier

12
推荐指数
1
解决办法
4004
查看次数

设置/获取动态自定义属性

主要的现代浏览器支持动态设置/检索自定义属性,IE-family除外.如何在所有浏览器中设置/获取自定义属性?

这是我到目前为止所尝试的:

HTML:

<input id="myInput" type="text" />
Run Code Online (Sandbox Code Playgroud)

JS:

var myInput = document.getElementById('myInput');
myInput.setAttribute('custom-attr', 'custom-value');
alert(myInput.getAttribute('custom-attr'));
Run Code Online (Sandbox Code Playgroud)

要么

var myInput = document.getElementById('myInput');
var customAttr = document.createAttribute('custom-attr');
customAttr.value = 'custom-value';
myInput.setAttributeNode(customAttr);
alert(myInput.getAttribute('custom-attr'));
Run Code Online (Sandbox Code Playgroud)

在这两种情况下IE alert()返回null.

javascript cross-browser dynamic custom-attributes

12
推荐指数
1
解决办法
2万
查看次数

将自定义属性添加到asp:CheckBox控件

我正在尝试将自定义数据所需的属性添加到asp Checkbox控件,它适用于我使用过的所有其他控件,但是在复选框上,它会在具有自定义属性的span中呈现复选框.我已经尝试在标记中添加属性,并尝试将其添加到后面的代码中的控件.有任何想法吗?

html asp.net custom-attributes

12
推荐指数
2
解决办法
1万
查看次数

在运行时更改自定义属性的参数

我需要在运行时更改属性的参数.我将我的问题简化为简单的例子.

属性类:

    [AttributeUsage(AttributeTargets.Property)]
    public class MyAttribute : Attribute
    {
        public string Name { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

简单实体,它使用属性修饰属性:

    public class MyEntity
    {
        [MyAttribute(Name="OldValue1")]
        public string Data1{ get; set; }

        [MyAttribute(Name = "OldValue2")]
        public string Data2 { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

我创建了MyEntity类的实例.我可以更改对象属性的值,但是我不能在对象实体上更改属性的属性Name的值.可能吗?

对象实体的属性值我可以用这部分代码改变:

                entityProp.SetValue(entity,"NewData",null);
Run Code Online (Sandbox Code Playgroud)

但我不知道如何更改对象实体上属性Name的值

这不起作用:

attProp.SetValue(attribute,"NewData",null);
Run Code Online (Sandbox Code Playgroud)

属性的价值名称仍然是原创的.

这是所有测试代码.谢谢你的帮助.

    [TestMethod]
    public  void Test()
    {
        var entity = new MyEntity
                         {
                             Data1 = "OldData",
                             Data2 = "OldData"
                         };

        PropertyInfo[] entityProps = entity.GetType().GetProperties();

        foreach (var entityProp in entityProps)
        {
            var attribute = Attribute.GetCustomAttribute(entityProp, …
Run Code Online (Sandbox Code Playgroud)

c# reflection runtime custom-attributes

12
推荐指数
2
解决办法
2万
查看次数

属性规范中的奇怪歧义(两个使用指令)

背景:属性规范中,有时存在两种写入应用属性的有效方法。例如,如果属性类具有名称HorseAttribute,则可以将属性应用为[HorseAttribute][Horse]。歧义可以用@例如来解决[@Horse]

以下是有效的程序:

using System;
using Alpha;
using Beta;

namespace N
{
  [Horse]
  class C
  {
  }
}

namespace Alpha
{
  // valid non-abstract attribute type with accessible constructor
  class HorseAttribute : Attribute
  {
  }
}

namespace Beta
{
  // any non-attribute type with that name
  enum Horse
  {
  }
}
Run Code Online (Sandbox Code Playgroud)

Alpha.HorseAttribute我编写just时,C#编译器可以选择[Horse]。毕竟,类型Beta.Horse完全不适合在属性规范中使用。

即使交换名称,C#编译器也会知道该怎么做:

using System;
using Alpha;
using Beta;

namespace N
{
  [Horse] …
Run Code Online (Sandbox Code Playgroud)

c# compiler-errors custom-attributes .net-attributes

12
推荐指数
1
解决办法
284
查看次数

JQuery:在我的html代码中使用自定义属性是不好的做法吗?

我一直在添加我使用JQuery引用的自定义属性,这非常有用.但这是好的做法吗?

例:

<div class="monkeys" customattr="big Monkey"> </div>
Run Code Online (Sandbox Code Playgroud)

谢谢大家

html jquery custom-attributes

11
推荐指数
1
解决办法
763
查看次数

控制器功能上方的自定义属性

我想将[FirstTime]属性放在控制器函数之上,然后创建一个FirstTimeAttribute具有一些逻辑来检查用户是否输入了他的名字,并将其重定向到/Home/FirstTime他是否已经输入.

所以不要做:

public ActionResult Index()
{
    // Some major logic here
    if (...)
        return RedirectToAction("FirstTime", "Home");

    return View();
}
Run Code Online (Sandbox Code Playgroud)

我会这样做:

[FirstTime]
public ActionResult Index()
{
    return View();
}
Run Code Online (Sandbox Code Playgroud)

这可能吗?

c# custom-attributes asp.net-mvc-4

11
推荐指数
1
解决办法
5753
查看次数

为什么我的属性会在所有操作上被触发,包括那些没有属性的操作?

我的web api中有一个控制器.我们称之为TimeController.

我有GET行动和PUT行动.它们看起来像这样:

public class TimeController : ApiController
{
    [HttpGet]
    public HttpResponseMessage Get()
    {
        return Request.CreateResponse(HttpStatusCode.OK, DateTime.UtcNow);
    }

    [HttpPut]
    public HttpResponseMessage Put(int id)
    {
        _service.Update(id);
        return Request.CreateResponse(HttpStatusCode.OK);
    }
}
Run Code Online (Sandbox Code Playgroud)

我也有一个路由配置如下:

routes.MapHttpRoute("DefaultApi", "{controller}/{id}", new { id = RouteParameter.Optional });

所以我可以以一种宁静的方式访问它.

现在,我还想GET使用自定义Route属性对操作进行版本控制.我使用的代码与Richard Tasker在这篇博客文章中谈到的代码非常相似.

(不同之处在于我使用正则表达式从accept头获取版本.其他所有内容都非常相似)

所以我的控制器现在看起来像这样:

public class TimeController : ApiController
{
    private IService _service;

    public TimeController(IService service)
    {
        _service = service;
    }

    [HttpGet, RouteVersion("Time", 1)]
    public HttpResponseMessage Get()
    {
        return Request.CreateResponse(HttpStatusCode.Ok, DateTime.UtcNow); …
Run Code Online (Sandbox Code Playgroud)

c# asp.net asp.net-mvc custom-attributes

11
推荐指数
1
解决办法
315
查看次数