如果您在 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