从MVC控制器操作的URL中删除序列化模型

时间:2015-06-22 17:01:37

标签: c# asp.net-mvc asp.net-mvc-5

在我的 Home 控制器中是Update yourtable set yourfield= Translate(yourfield, ' ', x'000102030405060708090A0B0C0D0E101112131415161718191A1B1C1D1E202122232425262728292A2B2C2D2E303132333435363738393A3B3C3D3E0F1F2F3F') where yourfield <> Translate(yourfield, ' ', x'000102030405060708090A0B0C0D0E101112131415161718191A1B1C1D1E202122232425262728292A2B2C2D2E303132333435363738393A3B3C3D3E0F1F2F3F') 操作。在Index()内,我使用当前经过身份验证的用户ID从数据库返回用户对象:

Index()

这是正常的,URL只是:

  

https://localhost:44301/

然而, Home 控制器中的其他位置在单独的操作中我修改当前用户并使用以下命令将其传递回索引视图:

return View(db.Users.Find(User.UserId));

当我这样做时,URL会变得混乱,并带有用户模型的序列化版本:

  

https://localhost:44301/Home/Index/4?Name=katrina&Administrator=True&PasswordEncodedHash=1000%3AqzWR8U6poGKshxHDsP%2B5yFhz5AZ01%2Fv1%3ASqCG0SliIpjX0M0jjkQqAf5aunTVS2gx&Tests=System.Collections.Generic.List%601%5BLearningManagementSystem.Models.Test%5D&UserTestAttempts=System.Collections.Generic.List%601%5BLearningManagementSystem.Models.UserTestAttempt%5D&Phones=System.Collections.Generic.List%601%5BLearningManagementSystem.Models.Phone%5D

我想我在重做动作的方式上做了一些愚蠢的事情,但我无法弄清楚如何解决这个问题。我尝试过添加自定义路线,但是&#34;?Name = ....&#34;仍然附加到那。

(编辑)其他行动的代码:

return RedirectToAction("Index", user);

1 个答案:

答案 0 :(得分:3)

我认为您在使用RedirectToAction重定向到某个操作时不需要传递整个数据。

假设您在Index中有Home controller行动。

Public ActionResult Index(int id)
{
  -- write the code here to fetch data based on that id
  -- like
     var user = db.Users.FirstOrDefault(x=>x.Id = id);
     return View(user);
}

现在,您只需要使用重定向操作,如下所示:

return RedirectToAction("Index", new { Id= 5 });

注意:

  • 永远不要在QueryString或GET请求中传递复杂类型对象