2011-04-28 23 views
0

我坚持以下情形:调用javascript函数返回任何类型的结果在控制器动作

在我看来有一个项目列表。根据项目所代表的内容,单击某个项目将带您到相应的视图并显示这些结果。现在在视图中显示结果不是问题;这工作正常。但是,某些项目应显示在弹出窗口中,而不是视图中。我将部分视图与bPopup和ShowListDialog(data)这样的javascript函数一起使用来显示对话框并绑定数据。如何在操作中返回任何需要的结果(我怀疑JavaScriptResult)时调用javascript函数。

我认为我的行为应该像此刻是:

公众的ActionResult的ResponseItem(INT参考) { ResponseBase的响应= repository.RetrieveResponse(参考);

if (response.ShouldShowInView) 
{ 
    return View(response.RedirectUrl, response.Data); 
} 
else 
{ 
    return JavaScript("ShowListDialog(" + response.Data.JsonString + ");"); 
} 

}

我一直在寻找回报的例子JavaScript的结果,我甚至不能得到那个工作。如果我这样说:

return JavaScript(“alert('Hello');”);

然后在IE中询问我是否想打开javascript文件;在Chrome和Firefox中它只显示alert('Hello');在页面上。

预先感谢帮助:) d

+0

你想要生成一些JavaScript并执行它吗?您可以简单地生成一个HTML页面,其中包含一个标签,并将脚本放入其中。 – 2011-04-28 10:03:02

+0

不,我想调用一个名为ShowListDialog的现有javascript函数,它将在当前页面顶部显示一个弹出对话框(如果点击的列表项产生需要在弹出窗口中显示的响应类型)。显示视图相关的项目是没有问题的。 – Dieter 2011-04-28 10:11:15

+0

我明白了,我的意思是你可以生成一个html响应,包括一个脚本标记,把你的脚本ShowListDialog(...)放在里面。然后脚本将被调用。 – 2011-04-28 10:40:08

回答

0

通过项目循环,你可以决定哪些是弹出,这是不然后链接到基于该2个独立的动作是什么时候?

JavaScriptResult只有在通过ajax调用动作时才有效,这可能是为什么它不起作用(如果不是)。你可以使用这个来告诉它是否是ajax请求,然后返回适当的结果。

相关问题