将URL作为参数传递给新View

时间:2015-04-13 15:56:00

标签: asp.net-mvc parameter-passing viewbag

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

很简单,使用MVC5,我有一个View,我们称之为Page1,其上有一个超链接。当用户单击该超链接时,我希望它们被带到新的View,Page2。在Page2上是iframe。我想将src的{​​{1}}属性设置为Page1的网址,即用户重定向的视图。

所以,如果我可以使用ViewBag(这里的人似乎不推荐),将Page1的URL从该View传递给Page2的Controller,然后在Page2上的标记中使用Razor定义iframe的{​​{1}}属性,我想这样可行。不幸的是,人们似乎不喜欢使用ViewBag,而且,我找不到如何在代码中实际实现此目的的端到端描述。

有人可以给我一个适当的直接解决方案吗?

2 个答案:

答案 0 :(得分:1)

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

@model string

要将其用作src属性,您只需执行此操作。

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

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

return View("Page2", myUrlStringVariable);

所以,回顾一下,ViewModel并不一定是你创建的新类 - 对于像这样的最基本的场景,你可以使用例如一个字符串作为ViewModel。一旦您开始将多个数据位传递到View,通常在您创建特定的ViewModel类时。

答案 1 :(得分:1)

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

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