0

我想知道如何将我的主键 int ID myid传递给使用for 每个循环.tolist方法

看法

@foreach (var item in Model)

{

@Html.ActionLink("View", "detail", new { id = item.myid})

@Html.ActionLink("Add Pictures", "pictures")

}

.tolist 控制器

[Authorize]

public ActionResult mylist(list listings)
    {

var showlist = (from s in db.list where getid == s.RegistrationID select s).ToList();

        return View(showlist.ToList());

}

正如您从上面看到的那样,我确实在mylist上有[authorize]符号,这是 foreach 语句已打开,因此人们已经登录。我的问题是我可以将 int myid放在@Html.ActionLink("Add Pictures", "pictures") 中吗?我不想在浏览器中拥有它,因为那时用户可以轻松输入不同的数字并查看其他人的图片。

4

3 回答 3

0

您不能通过检查他们的用户 ID 是否与图片的所有者 ID 匹配来防止人们查看其他人的图片吗?

您必须将 id 传递给用户,您无法避免。

于 2012-11-14T01:20:44.780 回答
0

这不是你停止这种“黑客行为”的地方。在您的控制器或其他地方,您检查当前经过身份验证的用户是否拥有该照片并将他重定向到显示“未找到图片”或类似内容的页面。

于 2012-11-14T01:26:16.770 回答
0

您应该在 url 中传递 id

@Html.ActionLink("Add Pictures", "pictures",new { @id=item.ID})

在您的图片操作方法中,您应该检查当前用户是否是已登录(身份验证)用户,并且他是否具有添加图片的适当权限(授权)。

public ActionResult pictures(int id)
{
  //TO DO  : Check the user has sufficient permission to add pictures. 
  // The implementation of this checking is completely up to you.
  // If not authorized redirect to a view to show the "Not authorized" message

}
于 2012-11-14T01:28:40.603 回答