是否可以在MVC属性路由中操作参数值?

时间:2016-02-01 20:13:46

标签: asp.net-mvc

我们可以有一个网址

[Route("Employee/Edit")]

指向

public ActionResult Edit(bool reviewMode=false)

,而

[Route("Employee/Review")]

指向

public ActionResult Edit(bool reviewMode=true)

我们知道我们可以传递像

这样的参数
[Route("Employee/Edit/{reviewMode}")]

采取行动:

public ActionResult Edit(string reviewMode)
{
    if (reviewMode.Equals("review", StringComparison.OrdinalIgnoreCase))
    ....
}

但是如果可以实现前两种路由模式,那么我们的url和Actions中的代码肯定会更优雅。

有可能吗?怎么样?

1 个答案:

答案 0 :(得分:0)

您可以将模式字符串保留为方法参数,并检查其值以设置布尔变量的值。

[Route("Employee/{mode}")]
public ActionResult Edit(string mode = "Edit")
{
    var isReviewModel = String.Equals(mode, "Review",
                                              StringComparison.InvariantCultureIgnoreCase);
    // to do something based on isReviewModel 
}

这适用于yourSiteName/employee/Reviewhttp://localhost:32200/employee/Edit

当请求网址为employee/Review时,isReviewModel变量值为true,当请求网址为employee/Edit时,该值为false