将 URL 作为参数传递给新视图
Pass URL to new View as a parameter
我花了几个小时试图找到一种方法来做到这一点。这是一个如此简单的要求,以至于我不敢相信我需要创建视图模型或任何如此宏伟的东西。
非常简单,使用MVC5,我有一个视图,我们称它为Page1,上面有一个超链接。当用户单击该超链接时,我希望他们被带到一个新的视图,Page2。第 2 页是 iframe
。我想将那个 iframe
的 src
属性设置为 Page1 的 URL,即用户从中重定向的视图。
所以,如果我可以使用 ViewBag(这里的人似乎不推荐),将页面 1 的 URL 从该视图传递到页面 2 的控制器,然后使用 Razor在我在 Page2 上定义 iframe
的 src
属性的标记中,我想这会工作得很好。不幸的是,人们似乎不喜欢使用 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;
我花了几个小时试图找到一种方法来做到这一点。这是一个如此简单的要求,以至于我不敢相信我需要创建视图模型或任何如此宏伟的东西。
非常简单,使用MVC5,我有一个视图,我们称它为Page1,上面有一个超链接。当用户单击该超链接时,我希望他们被带到一个新的视图,Page2。第 2 页是 iframe
。我想将那个 iframe
的 src
属性设置为 Page1 的 URL,即用户从中重定向的视图。
所以,如果我可以使用 ViewBag(这里的人似乎不推荐),将页面 1 的 URL 从该视图传递到页面 2 的控制器,然后使用 Razor在我在 Page2 上定义 iframe
的 src
属性的标记中,我想这会工作得很好。不幸的是,人们似乎不喜欢使用 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;