如果我試圖從我的控制器返回一些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