首页 新闻 会员 周边

在Asp.Net MVC中怎么在Action中返回一段JS并立即执行

0
[已解决问题] 解决于 2014-09-01 21:01

图来自书的截图,我按照它这么写了但是没有预期的效果,而是打开了一个新页面,页面的文本就是希望执行的那段js,求解释

北在北方的主页 北在北方 | 初学一级 | 园豆:180
提问于:2014-08-26 22:19
< >
分享
最佳答案
0

e有一个javaScriptResult 可以 ,但这种 返回的js你需要用别的内容去调用才能用 不然就当字符串处理了, 要不 你直接返回content写脚本就可以了 也可以注册一段脚本到前台

奖励园豆:5
望着天的蜗牛 | 菜鸟二级 |园豆:354 | 2014-08-27 17:05
其他回答(5)
0

在view输出时,js脚本要放在脚本标签里。

在ajax请求调用时,获得的数据是字符串(貌似ajax没有对返回js代码的支持),然后通过js的eval方法去执行这段代码。

519740105 | 园豆:5810 (大侠五级) | 2014-08-27 08:38

你是说我应该返回“<script type='text/javascript'>alert('go!')</script>”?

试过了也是在新页面西那是文本,文本内容是这个:<script type='text/javascript'>alert('go!')</script>

支持(0) 反对(0) 北在北方 | 园豆:180 (初学一级) | 2014-08-27 09:05

@北在北方: 有完整代码吗?可以帮你参考下。应该是客户端有特别处理,获取后直接使用了eval方法执行。

支持(0) 反对(0) 519740105 | 园豆:5810 (大侠五级) | 2014-08-27 09:40

@519740105: 这是从书上截取的,总之就是实现一个弹出提示的功能,但弹出的信息又是可以服务器设定的,类似于WinForm里的MessageBox.Show("信息")的意思。

支持(0) 反对(0) 北在北方 | 园豆:180 (初学一级) | 2014-08-27 09:52

@519740105: 或者是类似于asp.net web form 里那样注册客户端脚本来实现弹出框提示点击确定后跳转页面。

支持(0) 反对(0) 北在北方 | 园豆:180 (初学一级) | 2014-08-27 09:57
0

可以直接执行Js代码的,但是你返回的Js方法是在当前页面上已经存在的。

晓菜鸟 | 园豆:2594 (老鸟四级) | 2014-08-27 08:56

没看懂

支持(0) 反对(0) 北在北方 | 园豆:180 (初学一级) | 2014-08-27 09:05

@北在北方: 直接看代码吧。

public JavaScriptResult JsTest(string ff)//ff 异步调用传递的方法名
{
       return JavaScript(ff + "();");
}

比如我写的这个小例子,你在页面上异步请求一下,传递一下Js方法名,他就能直接执行了。

支持(0) 反对(0) 晓菜鸟 | 园豆:2594 (老鸟四级) | 2014-08-27 09:08

@519740105: ???我没问题啊,我是在帮楼主回答问题呢!

支持(0) 反对(0) 晓菜鸟 | 园豆:2594 (老鸟四级) | 2014-08-27 09:41
0

其实也可以用 response.write("<script>alert('');</script>");

wolfy | 园豆:2636 (老鸟四级) | 2014-08-27 12:55

我其实是想知道这个Javascript()辅助方法的使用方式。

支持(0) 反对(0) 北在北方 | 园豆:180 (初学一级) | 2014-08-27 13:33
0

其实就是Action的执行,只是返回的东西不一样而已。

action的执行一般 get/post 提交 两种方式,如ActionLink应该默认是get提交。

至于是异步ajax提交,需要引用ajax库,如jquery,或者微软自家带的。

Qlin | 园豆:2403 (老鸟四级) | 2014-08-27 13:41
0

需要在前端中使用异步请求才能接受JavaScriptResult时立刻执行,可以在前端调用如下jQ方法:

      $.get("/controllname/javascript");

Freeman0769 | 园豆:202 (菜鸟二级) | 2015-07-31 17:32
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册