Обнаружение ctrl+left нажимает на приложение winforms

Вы тестируете на неправильном уровне. [Авторизовать] атрибут гарантирует, что маршрутизация механизм никогда не будет вызывать тот метод для неавторизованного пользователя - RedirectResult будет на самом деле происходить из маршрута, не из Вашего метода контроллера.

Хорошие новости - уже существует тестовое покрытие для этого (как часть исходного кода платформы MVC), таким образом, я сказал бы, что Вы не должны волноваться об этом; просто удостоверьтесь, что Ваш метод контроллера делает правильную вещь , когда это называют, и доверяйте платформе для не вызова его при неправильных обстоятельствах.

РЕДАКТИРОВАНИЕ: Если Вы захотите проверить присутствие атрибута в Ваших модульных тестах, то необходимо будет использовать отражение для осмотра методов контроллера следующим образом. Этот пример проверит присутствие Авторизовать атрибута на методе ChangePassword POST в 'Новой демонстрации' Проекта ASP.NET MVC 2, это установлено с MVC2.

[TestFixture]
public class AccountControllerTests {

    [Test]
    public void Verify_ChangePassword_Method_Is_Decorated_With_Authorize_Attribute() {
        var controller = new AccountController();
        var type = controller.GetType();
        var methodInfo = type.GetMethod("ChangePassword", new Type[] { typeof(ChangePasswordModel) });
        var attributes = methodInfo.GetCustomAttributes(typeof(AuthorizeAttribute), true);
        Assert.IsTrue(attributes.Any(), "No AuthorizeAttribute found on ChangePassword(ChangePasswordModel model) method");
    }
}
11
задан DGaleano 25 June 2019 в 18:57
поделиться

1 ответ

Вам нужно чтобы проверить значение Form.ModifierKeys, чтобы узнать, был ли нажат Control, например:

    btn.Click += new EventHandler(btn_Click);

    private void btn_Click(object sender, EventArgs e)
    {
        if (Form.ModifierKeys == Keys.Control)
        {
            // Do Ctrl-Left Click Work
        }
    }
39
ответ дан 3 December 2019 в 01:33
поделиться
Другие вопросы по тегам:

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