2013-03-27 36 views
2

我正在將一個ASP.NET Forms應用程序(我沒有寫入)轉換爲一個MVC 3應用程序。 ClientScriptManager用於舊應用程序。 ClientScriptManager在MVC 3中不存在。什麼取代了ClientScriptManager?我已經做了足夠的閱讀,知道CSM與ASP.NET中的AJAX功能有關;它註冊了js腳本和函數的「集合」,有點類似於EditorTemplates如何爲類似的控件集合工作。我不一定希望在MVC中實現CSM;我只想知道微軟採取了哪些措施來使CSM過時。什麼取代MVC中的ClientScriptManager?

+0

我有上一篇好文:跟隨[這裏](http://blog.baltrinic.com/software-development/dotnet/clientscriptmanager-functionality-for-mvc-part-1) – Aman 2013-03-27 17:16:27

+0

潘卡,我現在選擇了一個答案。抱歉耽擱了。 – 2013-04-04 20:47:42

+0

Aman,我已經閱讀過那篇文章,但那是朝着我不想去的方向發展 - 即在MVC中重新實現ClientScriptManager。對於一個非常簡單的問題,這是一個過於複雜的解決方案。 – 2013-04-04 20:49:03

回答

3

ASP.Net MVC旨在爲您提供對HTML和js的完全控制,而不是像ASP.Net那樣爲您呈現這些內容。所以,沒有什麼能真正「替代」ClientScriptManager。因此,如何處理您的js完全取決於您。

你可以做一些簡單的像包括<script ...>標籤來引用嵌入式腳本或JS文件在你_Layout.cshtml文件,或者你可以使用某種形式的JavaScript裝載機像RequireJS或拿出自己的方案,完全使用「HTML輔助」或一些東西。

MVC 4介紹bundling的概念,它可以讓你定義腳本的集合稱爲「捆綁」,並有MVC自動運行如下,當你在瀏覽中引用它們像這樣把它們合併起來給你:

@Scripts.Render("~/bundles/jquery")

+0

我的問題確實不是很好,但你給我我正在尋找的答案。獎勵!我沒有在MVC中尋找ClientScriptManager的實現,因爲我知道這不是正確的方法。我最終將C#控制器操作和

0

下面是一個從控制器渲染JavaScript(函數)的例子。

控制器

public ActionResult Index(int? id) 
{ 
    ViewBag.MyAlert = "<script type='text/javascript'>MyAlert();</script>"; 
} 

查看

<script src="Your Path" type="text/javascript"></script> 
@Html.Raw(ViewBag.MyAlert) 

JS

function MyAlert() { 
    alert('Hi'); 
} 

下面是從Controller中呈現JavaScript(File)的示例。

protected override void OnActionExecuted(ActionExecutedContext filterContext) 
{ 
    StringBuilder sb = new StringBuilder(); 
    sb.Append("<script src='Your Path' type='text/javascript'></script>"); 
    filterContext.HttpContext.Response.Write(sb.ToString()); 
} 

所以使用這種方法你不需要在View中提到下面的代碼。

<script src="Your Path" type="text/javascript"></script>