【问题标题】:What replaced ClientScriptManager in MVC?什么取代了 MVC 中的 ClientScriptManager?
【发布时间】:2013-03-27 16:32:09
【问题描述】:

我正在将一个 ASP.NET Forms 应用程序(不是我编写的)转换为一个 MVC 3 应用程序。 ClientScriptManager 在旧应用程序中使用。 MVC 3 中不存在 ClientScriptManager。什么取代了 ClientScriptManager?我已经阅读了足够多的内容,知道 CSM 与 ASP.NET 中的 AJAX 功能有关;它注册 js 脚本和函数的“集”,有点类似于 EditorTemplates 如何为类似控件集工作。我不一定要在 MVC 中实现 CSM;我只是想知道微软采取了哪些实践使 CSM 过时了。

【问题讨论】:

  • 我有一篇很好的文章:关注here
  • Pankaj,我现在选择了一个答案。抱歉耽搁了。
  • 阿曼,我已经阅读了那篇文章,但那是朝着我不想去的方向前进 - 即在 MVC 中重新实现 ClientScriptManager。对于一个非常简单的问题,这是一个过于复杂的解决方案。

标签: asp.net-mvc-3 clientscriptmanager


【解决方案1】:

ASP.Net MVC 旨在让您完全控制 HTML 和 js,而不是像 ASP.Net 那样让框架为您呈现这些。所以,没有什么能真正“取代” ClientScriptManager。因此,如何处理 js 完全取决于您。

你可以做一些简单的事情,比如包含<script ...>标签来引用你的_Layout.cshtml文件中的内联脚本或js文件,或者你可以使用某种JavaScript加载器,比如RequireJS,或者完全使用你自己的方案“Html Helpers”之类的。

MVC 4 引入了bundling 的概念,它允许您将脚本集合定义为“捆绑包”,当您在视图中引用它们时,MVC 会自动为您缩小并将它们合并在一起:

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

【讨论】:

  • 我的问题确实不是很好,但你给了我正在寻找的答案。赞!我并没有在 MVC 中寻找 ClientScriptManager 的实现,因为我知道这不是正确的方法。我最终在 C# 控制器操作和
【解决方案2】:

以下是从 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-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-05
    • 2017-12-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多