【问题标题】:Detecting a source view from the controller从控制器检测源视图
【发布时间】:2012-11-06 18:57:24
【问题描述】:

是否可以识别表单提交给 Action 的视图/页面名称?

例如,假设我有两个视图:AddInfoEditInfo 两个视图都有一个我想提交的表单

@Html.BeginForm("SaveInfo","Info")
{
 ...
}

SaveInfo() 方法内部,我想识别提交/请求是来自AddInfo 还是EditInfo 视图。

public ActionResult SaveInfo(FormCollection collection)
{
 if(...I got here from AddInfo View)  <----- ?
 {
  ..do something 
 }
}

有可能吗?

谢谢

【问题讨论】:

  • 只需添加一个隐藏字段。 (记住恶意客户端可以修改它)

标签: asp.net-mvc view


【解决方案1】:

如果添加/编辑表单位于您网站上的不同页面,那么您可以使用Request.UrlReferrer 检查它的来源。也就是说,类似于:

bool sourceIsAddForm = 
  (Request.UrlReferrer.AbsoluteUri.IndexOf("/add", StringComparison.CurrentCultureIgnoreCase) != -1);

【讨论】:

  • 谢谢。这比使用隐藏字段更优雅。
  • @Shenaniganz:请注意,并非所有浏览器都会发送引荐来源网址。
  • 呃。那么不是真正的解决方案:(那么隐藏字段?
  • @SLaks 哪些浏览器不发送推荐人? (自我回答:他们都这样做,但用户可以关闭发送推荐人:stackoverflow.com/questions/2668821/…
猜你喜欢
  • 1970-01-01
  • 2015-07-16
  • 2014-03-21
  • 2017-07-25
  • 2012-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-09
相关资源
最近更新 更多