我很确定我做的事情非常愚蠢。请看看,让我知道我做错了什么。
这是我的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
。当我手动传递路线值时,它会起作用。请帮帮我。
非常感谢您的帮助,总有一天会付出代价。
谢谢!
干杯!
答案 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)