Как вернуть действие другого действия из контекста контроллера

StackOverflow https://stackoverflow.com/questions/5320291

Вопрос

Вот мой текущий код, я использую это для реализации вкладок

public ActionResult Index(string tabs, int id = 0)
{
    switch ((Tabs)Enum.Parse(typeof(Tabs), tabs,true))
    {
        case Tabs.Profile:
        default:
            return Profile(id);
    }
}


public ActionResult Profile(int id = 0)
{
    User user = UsersRepository.GetUser(id);
    if (user!= null)
    {
        return View(user);
    }

    return Redirect("/");

}

Я не хочу использовать RedirectToAction Как это изменит структуру URL того, что я хотел. Что-то вроде этого:

http://localhost/user?tabs=profile

http://localhost/user?tabs=settings

Это было полезно?

Решение

Вот мой нынешний взгляд, это выглядит неестественно для меня

    public ActionResult Index(string tabs, int id = 0)
    {
        switch ((Tabs)Enum.Parse(typeof(Tabs), tabs,true))
        {
            case Tabs.Profile:
            default:
                var userProfile= Profile(id);
                if (userProfile!= null)
                {
                    return View("Profile",userProfile);
                }
                return Redirect("/");
        }
    }

    [NonAction]
    public UsersViewModel Profile(int id = 0)
    {
        UsersViewModel user= UsersRepository.GetUser(id);

        return user;
    }
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top