0

我正在尝试查看是否可以将操作部分routes.MapRoute用于routeconfig.cs文件中的路由

我试过了:

        routes.MapRoute(
           name: "Person",
           url: "person/{action}/{param1}",
           new { controller = "Person", action ={action], param1 = UrlParameter.Optional }
       );

尝试{action}在新部分中使用时会出现语法错误action = {action}

如何使用变量来设置新的控制器操作?

4

1 回答 1

0

如果您在 url 参数中指定了 {action},那么它将用作操作。我认为您对默认参数感到困惑。在这里您指定默认值,因此 {action} 之类的东西不合适。

我相信这是您正在寻找的代码

  routes.MapRoute(
                name: "Person",
                url: "person/{action}/{param1}",
                defaults: new { controller = "Person", action ="Index", param1 = UrlParameter.Optional } );

假设这是您的人员控制器

using System.Web.Mvc;

namespace ActionVar.Controllers
{
    public class PersonController : Controller
    {
            public ActionResult Index(string param1 = null)
        {
            return Content($"Person controller default action.  Param1 ={param1}");
        }

        public ActionResult Edit(string param1 = null)
        {
            return Content($"Person controller edit action.  Param1 ={param1}");
        }
    }
}

一些 url 以及它们将如何为上述控制器路由:

  • /person - 在这种情况下,没有提供任何操作,因此将使用默认操作,即索引,并且 param1 的值将为空
  • /person/index/myparam1 - person 之后的字符串是索引,因此这将是操作,param1 的值将是 myparam1
  • /person/edit/myparam1 - 这次操作将被编辑,param1 将采用值 myparam1
于 2019-09-15T14:08:56.547 回答