2014-02-15 28 views
0

迁移我的大脑从的WebForms MVC的,我想:asp.net的MVC打开另一种观点认为在JavaScript

1)点击一个按钮,这将 2)执行一些JavaScript,这将 3)开放一个新的窗口(或标签,取浏览器被用于设置),将显示从相同溶液的现有视图,和 4)具有视图执行一些数据加载

我卡在图3和4

3)其中:

function foo(){ 
var wrkURL = globalURLVarFromViewOneThatPointsToViewTwo 
window.open(wrkURL,"_blank") 
} 

如何在同一解决方案中指定另一个现有视图(ViewTwo)的URL?有没有可以在ViewOne中调用的帮助器,它将在调用视图中创建该URL,并加载到globalURLVarFromViewOneThatPointsToViewTwo中?或者,如果我必须说明ViewTwo的URL,那么这个语法是什么样的?

4)如何让ViewTwo在显示前或显示后立即自动执行某些数据操作(如查找FlexGrid的数据)?我知道如何在document.ready上对控制器/ action执行Ajax调用;有没有其他的方式来调用一个控制器/动作,并加载view.bag,作为视图显示,而不是?

回答

2

为建设地址,看看网址助手:

@Url.Action("ActionName", "Controller", new { 
    someVariable= someData 
}) 

至于#4,注意到,当我建立的网址,我与路由参数进行编译。这些参数将传递给您的控制器的操作,您可以按照您的要求进行操作(只需确保路由已配置,以便您可以根据您的预期操作进行适当的匹配)。

+0

感谢您的意见。将解决方案重新提交到#4,我不确定这是否解决了“在视图显示上执行数据加载”的需要。是否有语法让视图在第一次加载时自动执行控制器操作?还是必须从调用控制器完成视图加载之前? – wayfarer

+0

Doh!我懂了。我可以调用任何我想要的JS控制器。这可以有我需要的“数据加载”操作。好的,我认为这是完成的。 – wayfarer

2

实际上action methods对网址做出了响应。所以你需要为操作方法创建一个URL。确保您从操作中返回该特定视图。

var wrkURL = '@Url.Action("SomeAction", "SomeController")'; 
+0

Doh!这很简单,我没有得到它将与window.open工作。谢谢。 – wayfarer