如何为自定义路由属性生成正确的ActionLink

时间:2014-07-07 05:36:38

标签: .net asp.net-mvc razor html.actionlink attributerouting

我的控制器正在使用路由属性,如下所示

控制器

[Route("tenant/{tenantId}/store/edit/{id}")]
public ActionResult Edit(int tenantId, int id)
{
    ...
}

视图

@Html.ActionLink("Edit", "Edit", "Store", new { tenantId = Request.QueryString["tenantId"], id = item.Id}, null)

我希望ActionLink生成的网址看起来像http://localhost/tenant/1/store/edit/3,但它会产生类似http://localhost/store/edit/3?tenantId=1的内容

1 个答案:

答案 0 :(得分:1)

找到答案,因为我已经从“租户”控制器编辑了前一个,我不再使用查询字符串来获取tenantId。

相反,现在我正在使用

var tId = ViewContext.RouteData.Values["tenantId"];

并且更新的ActionLink看起来应该是这样的

Html.ActionLink("Edit", "Edit", "Store", new { tenantId = tId, id = item.Id}, null)