ActionLink不起作用

时间:2014-10-28 20:59:37

标签: razor asp.net-mvc-5

我很确定我做的事情非常愚蠢。请看看,让我知道我做错了什么。

这是我的ActionLink

@Html.ActionLink("Edit","Edit","UserProfile", new { id = Model.ApplicationUserId },null)

当我点击它时会抛出错误的请求异常,而且我注意到网址是

https://localhost:44304/UserProfile/Edit/92b1347c-c9ec-4728-8dff-11bc9f935d0b

https://localhost:44304/UserProfile/Edit?userId=92b1347c-c9ec-4728-8dff-11bc9f935d0b

我的控制器中有HTTPGET编辑方法,需要UserId。当我手动传递路线值时,它会起作用。请帮帮我。  非常感谢您的帮助,总有一天会付出代价。 谢谢! 干杯!

2 个答案:

答案 0 :(得分:2)

如果您期望的参数为userId,请使用@Html.ActionLink,如下所示:

@Html.ActionLink("Edit","Edit","UserProfile", new { userId = Model.ApplicationUserId },null)

如果您传递名称为id的参数,那么MVC将像您提到的那样路由:

https://localhost:44304/UserProfile/Edit/92b1347c-c9ec-4728-8dff-11bc9f935d0b

哪个好,但你的方法应该是期望参数具有适当名称的东西:

// GET: /UserProfile/Edit/{id}
public ActionResult Edit(String id){


     //your code
     return View();
}

如果您有时间,请查看此ASP.NET MVC Routing Overview并了解更多详情。

希望它有所帮助。

答案 1 :(得分:1)

您需要为控制器操作更改参数从userId编辑为id - 最佳变体。

public Edit(int id)
{
}

@Html.ActionLink("Edit","Edit","UserProfile", new { userId = Model.ApplicationUserId },null)