【问题标题】:Get URL of actual page in MVC Controller在 MVC 控制器中获取实际页面的 URL
【发布时间】:2017-03-07 22:39:03
【问题描述】:

在我的 MVC 项目中,我在布局页面的页脚有一个“联系我们”表单,因此“联系我们”表单出现在网站的每个页面上。

每次提交表单时我都必须检查它在哪个页面上,我 表示在其 POST 方法中提交“联系我们”表单的页面的 url。

例如首页:

http://www.test.com/myWebSite.Site/Home

我需要得到:主页

但问题是,当我使用POST 请求提交表单时,在Action 中,Request.Url 总是给我:(Controller 的根和Action..)

http://www.test.com/myWebSite.Site/Shared/SubmitContactForm

我认为我需要的是前一步的URL... 我不知道该怎么做,有什么想法吗?

【问题讨论】:

  • 您想知道在其 POST 方法中提交“联系我们”表单的页面的网址吗?
  • 在渲染主页等页面时,需要填写“SubmitContactForm”中的参数。并在向 SubmitContactForm 发布请求时使用这些参数发布。
  • @StephenMuecke,没错!
  • 你可以在方法中有一个参数(比如string returnUrl)并以@using(Html.BeginForm( new { returnUrl = Request.RawUrl })) { ... }的形式添加它(或者如果你不希望它作为查询字符串,那么你可以分配它到绑定到视图模型属性的隐藏输入)
  • 感谢您的帮助,我不想使用 is 作为查询字符串,所以使用了隐藏字段的想法。谢谢!

标签: c# asp.net-mvc


【解决方案1】:

只是一个想法(如果我正确理解您的问题,如果没有,请道歉):

在您的布局页面联系表单中,添加两个隐藏输入以传入和使用:

<input type="hidden" name="currentAction" value="@ViewContext.RouteData.Values["Action"].ToString()">

<input type="hidden" id="currentController" value="@ViewContext.RouteData.Values["Controller"].ToString()">

即使您的表单位于共享布局视图上,这也会为您提供确切的控制器和操作

【讨论】:

  • 谢谢!工作!
猜你喜欢
  • 2019-12-17
  • 1970-01-01
  • 2012-12-03
  • 2017-01-30
  • 1970-01-01
  • 2020-12-15
  • 1970-01-01
  • 1970-01-01
  • 2017-06-06
相关资源
最近更新 更多