是否可以在MVC routeconfig文件中为操作使用变量

时间:2019-07-02 22:15:54

标签: variables model-view-controller action routeconfig

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

我尝试过:             route.MapRoute(                名称:“人”,                url:“人/ {action} / {param1}”,                新建{控制器=“人员”,操作= {操作],参数1 = UrlParameter.Optional}            );

在新部分中尝试使用{action}会在我尝试使用action = {action}时出现语法错误 如何使用变量设置新的{controller action变量?

1 个答案:

答案 0 :(得分:0)

如果您在url参数中指定了{action},那么它将用作操作。我认为您对defaults参数感到困惑。在这里,您可以指定默认值,这样{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}");
        }
    }
}

一些网址以及如何将它们发送给上述控制器:

  • /人-在这种情况下,未提供任何操作,因此将使用默认操作,即索引,并且param1的值将为空
  • / person / index / myparam1-人员之后的字符串为index,因此将作为操作,param1的值为myparam1
  • / person / edit / myparam1-这次将进行操作,并且param1的值将为myparam1