将我的大脑从WebForms迁移到MVC,我想:
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上的控制器/操作进行Ajax调用;有没有其他方法调用控制器/动作并加载view.bag,而不是显示视图?
答案 0 :(得分:2)
实际上action methods会回复网址。因此,您需要为操作方法创建一个URL。确保从操作中返回该特定视图。
var wrkURL = '@Url.Action("SomeAction", "SomeController")';
答案 1 :(得分:2)
要构建Url,请查看URL帮助程序:
@Url.Action("ActionName", "Controller", new {
someVariable= someData
})
对于#4,请注意,当我构建URL时,我正在使用路由参数构建它。这些参数将传递给您的控制器的操作,您可以随心所欲地执行操作(只需确保路由已配置,以便您获得适合您预期操作的匹配)。