JavaScriptResult的使用

 

知道有JavaScriptResult這東西,用猜也一定是回傳JavaScript程式碼,

…恩…基本上是沒錯啦,但實際要應用時卻是頻頻撞牆。

例如要利用JavaScriptResult寫入alert("massage")程式碼跳出訊息要如何做?

 

View為

@{
    ViewBag.Title = "Home Page";
}

@Ajax.ActionLink("alert", "DisplayAlertMessage", null)

 

Controller為

using System.Web.Mvc;

namespace WebApplication1.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }

        public ActionResult DisplayAlertMessage()
        {
            return JavaScript("alert('這是一個用 JavaScriptResult 的顯示結果');");
        }
    }
}

 

結果卻為

 

不是alert應該要跳出確認訊息嗎?怎麼會是把程式碼直接秀在頁面上?

原來使用JavaScriptResult時還需要「事前準備」

 

在前端使用Ajax.ActionLink、Ajax.BeginForm、配合AjaxOptions屬性等方法,

或是於後端使用JavaScriptResult時,事前必須要準備

(1)、於Package Manager Console安裝Ajax適配器

指令為Install-Package Microsoft.jQuery.Unobtrusive.Ajax

(2)、需在Html原始碼裡安裝該適配器,如下,注意安裝順序不可對調

<script src="∼/Scripts/jquery-1.10.2.js"></script>
<script src="∼/Scripts/jquery.unobtrusive-ajax.js"></script>

(3)、另外注意於Web.config檔是否有添加或開啟UnobtrusiveJavaScriptEnabled

<configuration>
  <appSettings>
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
  </appSettings>
</configuration>

(4)、確認你的瀏灠器是否開啟javascript功能

 

我是把jquery.unobtrusive-ajax.js加在_Layout.cshtml裡

再重新執行一次

成功!!!