2010-02-05 66 views
1

我想写一个返回Javascript的操作方法。 如何使用MVC控制器运行JavaScript?Javascript in Controller

我尝试了以下,但它无法正常工作。它显示文件下载 - 安全警告?

[AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult About(clsABC param) 
    { 
     string message = "Hello! World."; 
     System.Text.StringBuilder sb = new System.Text.StringBuilder(); 
     sb.Append("<script type = 'text/javascript'>"); 
     sb.Append("window.onload=function(){"); 
     sb.Append("alert('"); 
     sb.Append(message); 
     sb.Append("')};"); 
     sb.Append("</script>");    
     return JavaScript(sb.ToString()); 
    } 

对此问题的任何解决方案?

感谢, 卡皮尔

+0

不要尝试调用通过Ajax的行动? – 2010-02-05 08:24:21

回答

1

可以加载并与jQuery getScript method执行JavaScript。在这种情况下,您只需编写想要在您的动作中执行的脚本并使用jQuery调用它。

$.getScript("/Controller/Action", function(){ 
    alert('Script was loaded'); 
    }); 
}); 

如果加载按钮点击脚本不要忘记调用preventDefault方法是这样的。这将阻止下载文件对话框在您的案例中显示。

$('selector here').click(function(e){ 
    e.preventDefault(); 
    ...Do your stuff... 
    }    
); 
0

您可以阅读post

ASP.NET MVC框架支持多种类型的操作结果包括:

  1. 的ViewResult - 代表HTML和标记。
  2. EmptyResult - 表示无结果。
  3. RedirectResult - 表示重定向到一个新的URL。
  4. JsonResult - 表示可以在AJAX应用程序中使用的JavaScript对象表示法结果。

5. JavaScriptResult - 表示JavaScript脚本。

  1. ContentResult - 表示文本结果。
  2. FileContentResult - 表示可下载的文件(包含二进制内容)。
  3. FilePathResult - 表示可下载的文件(带有路径)。
  4. FileStreamResult - 表示可下载的文件(带有文件流)。

希望它可以帮助