RedirectToLocal не найден

У меня есть этот код:

using Solutionsecurity.web.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Security;

namespace Solutionsecurity.web.Controllers
{
    public class HomeController : Controller
    {


        public ActionResult Login() { 
        return View(new User());
        }

        [HttpPost]
        [AllowAnonymous]
        [ValidateAntiForgeryToken]
        public ActionResult Login(User u, string ReturnUrl) {

            if (Membership.ValidateUser(u.login, u.password))
            {
                return RedirectToLocal(ReturnUrl);
            }
            else {
                return View(u);
            }
        }

         [Authorize]
        public ActionResult Common()
        {
            return View();
        }
    }
}

Я понятия не имею, почему RedirectToLocal не найден!!! в этой строке:

return RedirectToLocal(ReturnUrl);

Любые идеи?

Ответы

Ответ 1

RedirectToLocal не входит в структуру. Он добавляется в некоторые шаблоны MVC в контроллере учетных записей:

Это взято из шаблона MVC5 AccountController:

private ActionResult RedirectToLocal(string returnUrl)
{
    if (Url.IsLocalUrl(returnUrl))
    {
        return Redirect(returnUrl);
    }
    else
    {
        return RedirectToAction("Index", "Home");
    }
}

Если вы хотите использовать этот метод во всех своих контроллерах, вы можете легко добавить его в качестве защищенного метода в базовый контроллер и наследовать все ваши контроллеры от этой базы:

public abstract class BaseController : Controller
{
    protected ActionResult RedirectToLocal(string returnUrl)
    {
        if (Url.IsLocalUrl(returnUrl))
        {
            return Redirect(returnUrl);
        }
        else
        {
            return RedirectToAction("Index", "Home");
        }
    }
}

public class HomeController : BaseController
{
    // ...
}