如果我试图从我的控制器返回一些JavaScript这样的:ASP.NET MVC - 返回JavaScriptResult不起作用
public ActionResult DoSomething()
{
return JavaScript("alert('Hello world!');");
}
我没有在我的浏览器中查看警报消息,但我得到一个下载从命名为动作的页面(我的情况为register.js)请求.js脚本。哪里不对?
如果我试图从我的控制器返回一些JavaScript这样的:ASP.NET MVC - 返回JavaScriptResult不起作用
public ActionResult DoSomething()
{
return JavaScript("alert('Hello world!');");
}
我没有在我的浏览器中查看警报消息,但我得到一个下载从命名为动作的页面(我的情况为register.js)请求.js脚本。哪里不对?
尝试以下。
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
}
}
我不会回来的Javascript,我将返回Content
,然后在页面上,我将这些内容转换到警报:
public ActionResult DoSomething()
{
return Content("Hello world!");
}
$.ajax({
url: "/Action/DoSomething/",
type: "POST",
success: editSuccess,
error: editFailure
});
function editSuccess(data) {
alert(data);
}
我认为这是反模式,但我有时需要从我的控制器调用定义的JavaScript函数(alert();是一个示例)。谢谢。 – User907863
我在返回结果为JavaScriptResult
时遇到类似的问题,指定的JavaScript没有执行。在我的情况下,JavaScript内容呈现为<pre>
标签中的文本。
解决方法是使用Content()
方法将JavaScript作为ContentResult
返回。所以请尝试:
public ActionResult DoSomething()
{
return Content("<script language='javascript' type='text/javascript'>alert('Hello world!');</script>");
}
我在ASP.NET论坛上找到了答案。看看Bruce的答案在下面的链接,它为什么被做这样一个更完整的解释:
谢谢!这在直接从浏览器地址栏调用ActionMethod时起作用,这正是我需要做的。 –
如果您需要返回使用JavaScriptResult一个js代码,请记住,你的行动应通过ajax调用来调用。直接通过Html.Actionlink或其他控件调用此操作会导致显示脚本文本而不是运行脚本。所以,你需要在你的视图中添加的js代码:
<script type="text/javascript">
$(function() {
$('#myButtonId').click(function() {
$.getScript("/MyController/DoSomething");
});
});
</script>
和你在myController的行动:
public ActionResult DoSomething()
{
return JavaScript("alert('Hello world!');");
}
当你调用从视图你的行动,确保您使用@Ajax.ActionLink
代替@Html.ActionLink
辅助方法。然后JavaScript将正确渲染,并显示您的警报。
你打电话给你的行为?此外,请注意,这通常被认为是[反模式](http://devlicio.us/blogs/billy_mccafferty/archive/2009/02/07/beware-of-asp-net-mvc-javascriptresult.aspx) 。 – R0MANARMY