Что вы хотите сделать, не является обычным явлением. Если вы больше пишете о том, чего хотите, мы можем помочь лучше. Ниже вы пытаетесь сделать это. Вид вызывается System.Web.Mvc.Html.Action. То есть, если код ниже полезен для чего-то, его можно использовать только в контроллере. В примере я нахожусь в SomeController, вызывая действие «О» на контроллере «Главная», используя расширение, которое вы хотите создать.
Кодекс Расширение:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Html;
using System.Web.Routing;
namespace StackOverflow.Controllers
{
public static class ControllersExtensions
{
public static ActionResult Index(this HomeController controller, string ViewName)
{
string controllerName = controller.GetType().Name.Replace("Controller", "");
RouteValueDictionary route = new RouteValueDictionary(new
{
action = ViewName,
controller = controllerName
});
RedirectToRouteResult ret = new RedirectToRouteResult(route);
return ret;
}
}
}
SomeController:
namespace StackOverflow.Controllers
{
public class SomeController : Controller
{
//
// GET: /Some/
public ActionResult Index()
{
HomeController home = new HomeController();
return home.Index("About");
}
}
}
Домашний контроллер:
public class HomeController : Controller
{
public ActionResult Index()
{
ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application.";
return View();
}
public ActionResult About()
{
ViewBag.Message = "Your app description page.";
return View();
}
public ActionResult Contact()
{
ViewBag.Message = "Your contact page.";
return View();
}
}
, что вы на самом деле пытаетесь сделать здесь? Я не вижу случай использования. – Jonesopolis
Методы расширения также не расширяют методы, они расширяют классы (то есть они псевдо добавляют дополнительные методы к классу). –
@Jonesopolis Я просто хочу добавить параметр к методу «Index()», «Index()» в соответствии с отображением «viewName» в представлении возврата. Но не можете изменить оригинальный метод – Tomcat