Met*_*uru 1 asp.net-mvc action uri controller
string actionName = "Users";
[HttpGet]
[ActionName(actionName)]
public ActionResult GetMe()
{
}
Run Code Online (Sandbox Code Playgroud)
... give:非静态字段,方法或属性需要对象引用
这只是一个测试,有没有办法做到这一点?如果是这样,我可以重新使用相同的Controller并可能动态创建新的URI ...对吗?
假设您有以下控制器:
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
}
Run Code Online (Sandbox Code Playgroud)
你可以写一个自定义路由处理程序:
public class MyRouteHander : IRouteHandler
{
public IHttpHandler GetHttpHandler(RequestContext requestContext)
{
var rd = requestContext.RouteData;
var action = rd.GetRequiredString("action");
var controller = rd.GetRequiredString("controller");
if (string.Equals(action, "users", StringComparison.OrdinalIgnoreCase) &&
string.Equals(controller, "home", StringComparison.OrdinalIgnoreCase))
{
// The action name is dynamic
string actionName = "Index";
requestContext.RouteData.Values["action"] = actionName;
}
return new MvcHandler(requestContext);
}
}
Run Code Online (Sandbox Code Playgroud)
最后将自定义路由处理程序与路由定义相关联:
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
).RouteHandler = new MyRouteHander();
Run Code Online (Sandbox Code Playgroud)
现在,如果您要求/home/users它将是将要服务Index的Home控制器的动作.
| 归档时间: |
|
| 查看次数: |
1602 次 |
| 最近记录: |