将 URL 作为参数传递给新视图

Pass URL to new View as a parameter

我花了几个小时试图找到一种方法来做到这一点。这是一个如此简单的要求,以至于我不敢相信我需要创建视图模型或任何如此宏伟的东西。

非常简单,使用MVC5,我有一个视图,我们称它为Page1,上面有一个超链接。当用户单击该超链接时,我希望他们被带到一个新的视图,Page2。第 2 页是 iframe。我想将那个 iframesrc 属性设置为 Page1 的 URL,即用户从中重定向的视图。

所以,如果我可以使用 ViewBag(这里的人似乎不推荐),将页面 1 的 URL 从该视图传递到页面 2 的控制器,然后使用 Razor在我在 Page2 上定义 iframesrc 属性的标记中,我想这会工作得很好。不幸的是,人们似乎不喜欢使用 ViewBag,而且我找不到关于如何在代码中实际实现这一点的端到端描述。

有人可以给我一个适当直接的解决这个问题的方法吗?

View 的 ViewModel 可以简单地是一个字符串 - 所以如果您只需要将单个值传递给视图(URL 用作 src),那么在 Page2.cshtml,你只需像这样在顶部定义模型:

@model string

要将其用作 src 属性,您只需执行例如

<iframe src="@Model" .... >

然后从控制器中,将 url 字符串作为模型传递给视图,如下所示:

return View("Page2", myUrlStringVariable);

因此,回顾一下,ViewModel 不一定是您创建的新 class - 对于像这样的最基本的场景,您可以只使用例如作为 ViewModel 的字符串。一旦您开始将多位数据传递给视图,这通常是您希望创建特定的 ViewModel class.

另一种选择可能是 JavaScript 解决方案。像...

 document.getElementById('myIframe').src = document.referrer;