2013-04-26 63 views
0

我有几个idententical意见。可以说:(1)过时产品(2)现场产品。获取视图名称,其中调用动作方法

UI几乎相同,包括这些视图调用的操作方法。目前,我已经走了“基于状态”的编码。

public ActionResult GetProducts(string productType, bool isObsolete) 
    { 
     //some common code... 

     //status passed from the view 
     return isObsolete ? View("ObsoleteProducts") : View("LiveProducts"); 
    } 

我不希望意见通过状态 - isObsolete。相反,动作方法应该检测哪个视图调用了我(动作本身)。

我挖成Request对象及其属性,但它ofcourse有“... \的GetProducts”为URI ..

+0

真的我不明白,这是你的问题/麻烦? – 2013-04-26 15:53:42

+0

Zach ..它关于...“动作方法如何知道哪个视图(父级)称他为”或“动作方法如何在运行时知道自己的路径” – StartingFromScratch 2013-04-26 16:29:18

回答

2

你是那种通过询问该视图实际上没有传递任何信息,限制自己的选择回来让你知道请求来自哪里。

也就是说,您很可能需要查看请求的UrlReferrer属性以查看请求来自哪里。

http://msdn.microsoft.com/en-us/library/system.web.httprequest.urlreferrer.aspx

+0

谢谢..它的工作原理... catch:请求生成器视图不能作为默认(开始)视图,因为在这种情况下不会有任何创建者。 – StartingFromScratch 2013-04-26 16:03:45

+0

是的 - 如果有人直接链接到外部网站的GetProducts,这也将失败,因为它赢得了不是来自liveProducts或obsoleteProducts。如果推荐人是你不期望的东西,那么确保你有一个默认的应变集。 – Tommy 2013-04-26 16:15:57

+0

覆盖捕获使得实现脆弱..离开了appraoch ..在最后其不是“那”不好给责任视图传递(维护)自己的状态。 – StartingFromScratch 2013-04-26 16:27:26