【问题标题】:Parameter passing in ASP.Net MVCASP.Net MVC 中的参数传递
【发布时间】:2011-05-21 08:51:31
【问题描述】:

我想对asp.net mvc提出一些问题。实际上,我不熟悉web开发。我的问题是我有两个控制器,一个是登录,另一个是 profile.登录后,我想调用profile.so,我用这种方式,

return RedirectToAction("DiaplayProfile","Profile",new { personID = Person.personID});

我的问题是我传递的参数显示在 URL 中。我不想显示。在 web 开发中,如果我们使用 post 方法发送数据,参数不显示在 url 中,是否正确?对我来说,我需要传递参数,但是,我不想在 url 上显示。 我如何在 MVC RedirectToAction 的 post 方法中使用?我还用 TempData 进行了测试 传递数据,但是,如果我刷新它就会消失。我如何处理这个?而且, 我可以使用 [AcceptVerbs(HttpVerbs.Post)] 来解决这个问题吗?

请指导我正确的方式。

问候 冲

【问题讨论】:

    标签: asp.net asp.net-mvc


    【解决方案1】:

    您不能将帖子作为重定向的一部分;重定向必须是获取请求,因为您只是将要重定向到的 URL 传递给浏览器。在 MVC 中,将 id 作为 URL 的一部分实际上被认为是一件好事。我会拥抱它。我不会使用personID 参数,而是使用id 以便可以使用默认路由。最终,我希望得到一个如下所示的 URL:

    http://example.com/profile/display/1345
    

    其中 1345 是相关人员的id。如果您使用默认路由,这意味着您有一个带有Display 方法的ProfileController,该方法采用单个id 参数(类型为int)。您将使用以下命令重定向到它:

    return RedirectToAction( "display", "profile", new { id = 1345 } );
    

    顺便说一句,您不能使用AcceptVerbs 属性来控制如何进行重定向,只能控制操作将响应哪些 HTTP 动词。在这种情况下,我认为您确实希望接受 GET,并且我认为您确实希望在 URL 中包含 id。

    【讨论】:

    • 感谢您的回答,所以,现在,我的想法是,首先,我创建静态类,然后在调用配置文件控制器之前将数据插入到这些类中。这是我不需要通过的方式任何数据,我可以从任何控制器重用。我可以这样使用吗?这是避免在 url 上显示参数的正确方法吗?请指导我。 :)
    • @Chong - 如果您有额外的数据需要保留在 id 之外,您可以在下一个请求时使用会话或将其保存到数据库(并读回)。无需创建静态类来模拟会话对象。如果只是 id,请将其保留在 URL 中。
    • ok tvanfosson,我们的问题是我们需要传递 ID 或 nric,但由于我们的客户政策,我们不想在 url 显示它,如果我们在 RedirectToAction 中传递这些参数,它将显示在 url ,正确吗?我可以隐藏这个吗?我认为我们需要使用会话或从数据库读取和返回。
    猜你喜欢
    • 1970-01-01
    • 2010-10-18
    • 1970-01-01
    • 2021-01-21
    • 2010-09-14
    • 2011-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多