ASP.NET MVC-返回JavaScriptResult不';行不通

ASP.NET MVC-返回JavaScriptResult不';行不通,javascript,asp.net-mvc-3,controller,Javascript,Asp.net Mvc 3,Controller,如果我尝试从控制器返回一些JavaScript,如下所示: public ActionResult DoSomething() { return JavaScript("alert('Hello world!');"); } 我没有在浏览器中查看警报消息,但我从名为action(在我的例子中是register.js)的页面获得了一个下载.js脚本的请求。怎么了?我不会返回Javascript,我会返回内容,然后在页面上,我会将该内容转换为警报: p

如果我尝试从控制器返回一些JavaScript,如下所示:

public ActionResult DoSomething()
{       
    return JavaScript("alert('Hello world!');");            
}

我没有在浏览器中查看警报消息,但我从名为action(在我的例子中是register.js)的页面获得了一个下载.js脚本的请求。怎么了?

我不会返回Javascript,我会返回
内容,然后在页面上,我会将该内容转换为警报:

public ActionResult DoSomething()
{       
    return Content("Hello world!");            
}

$.ajax({
    url: "/Action/DoSomething/",
    type: "POST",
    success: editSuccess,
    error: editFailure
});

function editSuccess(data) {
   alert(data);
}
试试下面的方法

public ActionResult DoSomething(){

return Json(new {isok=true, message="Your Message", data=...});

//True / False Json Return
//return UserObj == null ?
//Json(true, JsonRequestBehavior.AllowGet) :
//Json(string.Format("YourObject '{0}' to String", YourObject),
//JsonRequestBehavior.AllowGet);

}

//view
$.ajax
{

//code
success :function(returnvalue)
{

if(!returnvalue.isok)
{
window.alert("Error:" + returnvalue.message);
}
else
{
//do the stuff with returnvalue.data
}

}

当以
JavaScriptResult
的形式返回结果时,我遇到了一个类似的问题,指定的JavaScript没有执行。在我的例子中,JavaScript内容在

public ActionResult DoSomething()
{       
    return Content("<script language='javascript' type='text/javascript'>alert('Hello world!');</script>");            
}
我在ASP.NET论坛上找到了答案。请在以下链接中查看Bruce的答案,以更完整地解释为什么会这样做:


如果需要使用JavaScriptResult返回js代码,请记住应该通过ajax调用调用您的操作。通过Html.Actionlink或其他控件直接调用此操作会导致显示脚本文本而不是运行脚本。因此,您需要在视图中添加js代码:

public ActionResult DoSomething()
{       
    return JavaScript("alert('Hello world!');");            
}

从视图调用操作时,请确保使用
@Ajax.ActionLink
而不是
@Html.ActionLink
助手方法。JavaScript将正确呈现,并显示您的警报。

您如何调用您的操作?另外,请注意,这通常被认为是一种反模式。我知道这是一种反模式,但有时我需要从控制器调用已定义的javascript函数(alert();就是一个例子)。谢谢,谢谢!这在直接从浏览器地址栏调用ActionMethod时起作用,这正是我需要做的。
public ActionResult DoSomething()
{       
    return JavaScript("alert('Hello world!');");            
}