2014-04-18 17 views
14

tôi có mã này:RedirectToLocal không tìm thấy

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(); 
     } 
    } 
} 

Tôi không có ý tưởng tại sao RedirectToLocal không tìm thấy !!! trong dòng này:

return RedirectToLocal(ReturnUrl); 

Bất kỳ ý tưởng nào?

+1

Bạn đang sử dụng phiên bản MVC nào? – Dismissile

+0

Tôi đang sử dụng Asp.net MVC4 –

Trả lời

26

RedirectToLocal không phải là một phần của khuôn khổ. Nó được thêm vào trong một số các mẫu MVC trong điều khiển tài khoản:

này được lấy từ các MVC5 mẫu AccountController:

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

Nếu bạn muốn phương pháp này trong tất cả các bộ điều khiển của bạn, sau đó bạn có thể dễ dàng thêm nó như một phương pháp được bảo vệ trong bộ điều khiển cơ sở và có tất cả các bộ điều khiển của bạn kế thừa từ cơ sở đó:

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 
{ 
    // ... 
}