Как написать метод расширения для RedirectToAction, чтобы установить TempData в Mvc? - PullRequest
0 голосов
/ 12 июня 2018

Я хочу написать метод расширения для метода RedirectToAction (), который вызывается в контроллере mvc.в этом методе я хочу установить TempData с моим сообщением и иметь что-то вроде этого RedirectToAction ("Index"). WithMessage (сообщение)

я написал этот код

    public static class ActionResultExtension
{
    public static IActionResult WithMessage(this IActionResult result,string message)
    {

    }
} 

но проблема в том, что я не знаю, как мне получить доступ к контексту

1 Ответ

0 голосов
/ 12 июня 2018

Интересный вопрос:)

Первоначальным решением было бы реализовать пользовательский ActionResult, который бы переопределил ExecuteResult метод для установки сообщения TempData.

СоздатьCustom ActionResult: `

public class RedirectWithConfirmationMessageResult : ActionResult
{
    private readonly string message;

    public RedirectWithConfirmationMessageResult(ActionResult redirectBaseResult, string message)
    {
        BaseResult = redirectBaseResult;
        this.message = message;
    }

    public ActionResult BaseResult { get; private set; }

    public override void ExecuteResult(ControllerContext context)
    {
        context.Controller.TempData["Message.Notification"] = this.message;

        BaseResult.ExecuteResult(context);
    }
}

Создание методов расширения

public static class RedirectExtensions
{
    public static RedirectWithConfirmationMessageResult WithConfirmation(this RedirectToRouteResult instance, string message)
    {
        return new RedirectWithConfirmationMessageResult(instance, message);
    }

    public static RedirectWithConfirmationMessageResult WithConfirmation(this RedirectResult instance, string message)
    {
        return new RedirectWithConfirmationMessageResult(instance, message);
    }        
}

Использование

[HttpGet]
public ActionResult DoSomething()
{
    return this
        .RedirectToAction("Index", "Home")
        .WithConfirmation("Saved Successfully !");
}

Надежда помогает.

Авторы этой записи. Авторы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...