Использовать пользовательский ASP.NET MVC IValureProvider, не устанавливая его глобально?

Я хочу иметь возможность брать ключи/значения из cookie и использовать их для связывания модели.

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

Для этого я не хочу создавать настраиваемый GroupProvireFactory и связывать его глобально, потому что я хочу, чтобы этот GroupProvider использовался только в определенном методе действия.

Я построил атрибут, который делает это:

/// <summary>
/// Replaces the current value provider with the specified value provider
/// </summary>
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class, Inherited = true, AllowMultiple = true)]
public class SetValueProviderAttribute : ActionFilterAttribute
{
    public SetValueProviderAttribute(Type valueProviderType)
    {
        if (valueProviderType.GetInterface(typeof(IValueProvider).Name) == null)
            throw new ArgumentException("Type " + valueProviderType + " must implement interface IValueProvider.", "valueProviderType");

        _ValueProviderType = valueProviderType;
    }

    private Type _ValueProviderType;

    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        IValueProvider valueProviderToAdd = GetValueProviderToAdd();

        filterContext.Controller.ValueProvider = valueProviderToAdd;
    }

    private IValueProvider GetValueProviderToAdd()
    {
        return (IValueProvider)Activator.CreateInstance(_ValueProviderType);
    }
}

К сожалению, ModelBinder и его IValureProvider установлены ПЕРЕД ONActionExecuting (почему?????). Кто-нибудь еще придумал, как ввести пользовательский IValureProvider в DefureModelBinder без использования StartProvireFactory?

-121--1080178- Wordpress: WP_Query критерии поиска на 'post _ name' Я использую WP_Query (довольно стандартный). Все отлично работает. Тем не менее, у меня есть конкретная модификация, чтобы сделать, где, если пользователь вводит конкретное имя публикации в URL, поиск вернет только...

Я использую WP_Query (довольно стандартный). Все отлично работает.

Однако у меня есть конкретное изменение, где, если пользователь вводит конкретное имя публикации в URL, поиск вернет только ту публикацию, которая соответствует этому post_name значению.

Смотрите мой код ниже с комментарием о том, что конкретная строка не работает.

<?php

$getPeople = array(
    'post_type' => 'person',
    'posts_per_page' => -1,
    // I want this below to only return me the post with this specific value.
    // This doesn't error, but doesn't work either.
    // I know it seems counter-productive to a 'search' but this particular case requires it.
    // This has a hard-coded value at the moment.
    'post_name' => 'rebecca-atkinson',
    'orderby' => 'meta_value',
    'meta_key' => 'last-name',
    'order' => 'ASC',

    'meta_query' => array(
        array(
            'key' => 'gender',
            'value' => $theGender,
        )
    ),

    'tax_query' => array(

        'relation' => 'OR',

        array(
            'taxonomy' => 'accent',
            'field' => 'slug',
            'terms' => $theAccent,
            'operator' => 'IN',
        ),
        array(
            'taxonomy' => 'style',
            'field' => 'slug',
            'terms' => $theStyle,
            'operator' => 'IN',
        ),
        array(
            'taxonomy' => 'age',
            'field' => 'slug',
            'terms' => $theAge,
            'operator' => 'IN',
        ),

    )
);

$myposts = new WP_Query($getPeople);

?>

Ваша помощь была бы очень признательна. Если бы я мог просто посмотреть, как искать на этой конкретной «пробке», то это было бы здорово.

Большое спасибо, Майкл.

7
задан Michael Giovanni Pumo 29 September 2011 в 16:10
поделиться