我正在将 ASP.NET Forms 应用程序(我没有编写)转换为 MVC 3 应用程序。ClientScriptManager 在旧应用程序中使用。MVC 3 中不存在 ClientScriptManager。什么取代了 ClientScriptManager?我已经阅读了足够多的内容,知道 CSM 与 ASP.NET 中的 AJAX 功能有关;它注册 js 脚本和函数的“集”,有点类似于 EditorTemplates 如何为类似控件集工作。我不一定要在 MVC 中实现 CSM;我只想知道微软采取了哪些实践使 CSM 过时了。
问问题
3459 次
2 回答
3
ASP.Net MVC 旨在让您完全控制 HTML 和 js,而不是像 ASP.Net 那样让框架为您呈现这些。所以,没有什么能真正“取代” ClientScriptManager。因此,如何处理 js 完全取决于您。
你可以做一些简单的事情,比如包含<script ...>
标签来引用文件中的内联脚本或 js 文件_Layout.cshtml
,或者你可以使用某种 JavaScript 加载器,比如RequireJS,或者完全使用“Html Helpers”或其他东西来提出你自己的方案。
MVC 4 引入了捆绑的概念,它允许您将脚本集合定义为“捆绑”,当您在视图中引用它们时,MVC 会自动为您缩小并将它们合并在一起,如下所示:
@Scripts.Render("~/bundles/jquery")
于 2013-03-28T01:05:22.987 回答
-1
下面是从 Controller 渲染 JavaScript(Function) 的示例。
控制器
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>
于 2013-03-28T05:23:20.327 回答