Атрибуты MVC на контроллерах и действиях

.find() не будет работать. Вы должны получить текст элемента и split() его, а затем изменить его, используя map() и replace() и сбросить text()

$(function(){
    $(".grouping").each(function(){
        
        var val=$(this).attr("v");
        var counter=1;
        let lines = $(this).text().split('\n');
        lines = lines.map(ln => {
          if(ln.includes('----')){
            ln = ln.replace('----',`(${counter}${val})`)
            counter++;
          }
          return ln;
        })
        lines = lines.filter(ln => ln !== '');
        $(this).text(lines.join('\n'));
    });
});
.grouping { white-space: pre; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<span class="grouping" v="a">
----My first step
----This is another
----And another
</span>
<br/>
<span class="grouping" v="b">
----second group
----second group 2
</span>

7
задан Ian Kemp 28 September 2016 в 13:59
поделиться

4 ответа

Йоханнес дал правильное решение, и вот как я его закодировал ... надеюсь, это поможет другим.

[MyFilter("MyAction")]
public class HomeController : Controller
{
    public ActionResult Action1...
    public ActionResult Action2...
    public ActionResult MyAction...
}

public class CompressFilter : ActionFilterAttribute
{
    private IList _ExcludeActions = null;

    public CompressFilter()
    {
        _ExcludeActions = new List();
    }

    public CompressFilter(string excludeActions)
    {
        _ExcludeActions = new List(excludeActions.Split(','));
    }

    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        HttpRequestBase request = filterContext.HttpContext.Request;

        string currentActionName = (string)filterContext.RouteData.Values["action"];

        if (_ExcludeActions.Contains(currentActionName))
            return;

        ...
    }
3
ответ дан 6 December 2019 в 11:52
поделиться

Вы можете исключить конкретное действие, передав его в основной атрибут:

 [MyAttribute(Exclude="Action3")]

EDIT

Мой пример был из головы (как вы можете видеть, следующее: VB.NET, возможно, здесь что-то пошло не так), вот как я реализовал:

<Models.MyAttribute(Exclude:="Action3")> _
Public Class MyController
Inherits System.Web.Mvc.Controller

End Class
2
ответ дан 6 December 2019 в 11:52
поделиться

Вы должны переопределить / расширить атрибут по умолчанию и добавить собственный конструктор, чтобы разрешить исключение. Или вы можете создать свой собственный атрибут для исключения (в вашем примере это [Remove_MyAttribute]).

3
ответ дан 6 December 2019 в 11:52
поделиться

Обычный шаблон для того, что вы пытаетесь сделать, - это иметь и атрибут с логическим параметром, который указывает, применяется ли атрибут или нет.

Пример:

[ComVisible] which is equivalent with [ComVisible(true)]

or 

[ComVisible(false)]

в вашем случае у вас будет:

[MyAttribute] // defaults to true

and

[MyAttribute(false)] for applying the attribute on excluded members
2
ответ дан 6 December 2019 в 11:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: