我正在开发一个应用程序,在用户登录后我想将它们重定向到可以更新其个人资料的页面,为此我想使用登录的用户的ID来检索他们的细节。
由于我试图像这样使用他们的ID,我不知道最好的方法是在网址中显示ID还是 actionLink ,我的编辑ActionResult是:
// GET: ProfileFormViewModel/Edit/5
public ActionResult Edit(int id)
{
//My code to load the user details
return View(profileFormViewModel);
}
这是否意味着如果用户更改了网址,他们会获得其他用户的详细信息?
由于我试图从登录用户中检索用户ID,我甚至需要在ActionResult方法中接收int
参数,我可以将其保留为:
// GET: ProfileFormViewModel/Edit/5
public ActionResult Edit()
{
//get logged in user
return View(profileFormViewModel);
}
public ActionResult Edit(ProfileFormViewModel profileFormViewModel)
{
try
{
if (ModelState.IsValid)
{
//Go save it
}
return RedirectToAction("Index");
}
catch
{
return View();
}
}
我的路线配置如下,所以如果我不在ActionResult链接中发送一个int ID,它会给我一个错误
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
答案 0 :(得分:0)
这是否意味着如果用户更改了网址,他们就会获得 其他用户的详细信息?
答案是是。如果您不希望发生这种情况,可以这样做:
id
检查输入id
。Profile
并让他按照自己的意愿进行任何更改。但是,从我的观点来看,当用户尝试通过更改网址中的id
来查看其他用户的个人资料时,只需让他查看即可。他所能做的就是阅读,不允许编辑。
我甚至需要在ActionResult方法中接收
int
参数吗?
是,你应该。但要明确的是,正如我所说:“让他看到其他个人资料”,你应该将其分为两种方法:
public ActionResult ViewProfile(int id)
{
// This method allows user to view his or another user's profile
}
public ActionResult Edit()
{
// This method is called when user clicks Edit in his profile.
// It returns a View for editing (data in some controls like textboxes, dropdownlist,...)
}