我正在尝试查看是否可以将routes.MapRoute
的操作部分用于routeconfig.cs
文件中的路由
我尝试了:
routes.MapRoute(
name: "Person",
url: "person/{action}/{param1}",
new { controller = "Person", action ={action], param1 = UrlParameter.Optional }
);
尝试使用action = {action}
时,尝试在新部分中使用{action}
会产生语法错误。
如何使用变量设置新的控制器操作?
如果您在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的值将为null
- /person/index/myparam1-人索引之后的字符串,因此这将是动作,而param1的值将是myparam1
- /person/edit/myparam1-这次操作将进行编辑,而param1将采用myparam1的值