渲染javascript服务器端
本文关键字:服务器端 javascript 渲染 | 更新日期: 2023-09-27 18:13:37
我想在服务器上创建一个非常简单的脚本(服务器端事件的客户端代理)。使用MVC4渲染脚本服务器端最常见的方式是什么?
第一次回答后更新:我想包括例如@Scripts.Render("~/eventAggregation/events")
,它应该在我的服务器上调用代码,用c#代码生成Javascript,这也是为了一个库,所以我不能用Razor页面或MvcController,我想让它接近SignalR的Hub代理,我看了看代码,但它的几百行代码注入动态生成的脚本,必须比这更容易吗?
既然你说你不能使用MvcController或Razor视图,你可以更接近金属:IHttpHandler
。
所以从写一个开始:
public class MyHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
var response = context.Response;
response.ContentType = "text/javascript";
var message = "This is some super dynamic message. The UTC time now is: " + DateTime.UtcNow.ToLongTimeString();
var js = string.Format("alert({0});", new JavaScriptSerializer().Serialize(message));
response.Write(js);
}
public bool IsReusable
{
get { return true; }
}
}
然后写一个相应的路由处理程序:
public class MyHandlerProvider: IRouteHandler
{
public IHttpHandler GetHttpHandler(RequestContext requestContext)
{
return new MyHandler();
}
}
和在你的Application_Start
添加一个路由:
protected void Application_Start()
{
RouteTable.Routes.Add(
new Route(
"eventAggregation/events",
new MyHandlerProvider()
)
);
}
如果你不想手动添加路由在你的Application_Start
你可以使用WebActivator
。只需编写一个静态Startup类:
internal static class Startup
{
public static void Application_Start()
{
RouteTable.Routes.Add(
new Route(
"eventAggregation/events",
new MyHandlerProvider()
)
);
}
}
然后使用程序集范围属性:
[assembly: WebActivatorEx.PreApplicationStartMethod(typeof(MvcApplication1.Startup), "Application_Start")]
现在视图中剩下的就是引用它了:
<script type="text/javascript" src="~/eventAggregation/events"></script>
有bundle和RenderSection和@Scripts。呈现(
的例子:
"@RenderSection("Scripts", true)".
你希望通过服务器端代码向下渗透到你的UI层吗?
的例子:
元素的data-attribute或id,并在JavaScript中获取它们。
<div id="MightyId" data-name="@item.attribute"></div>
$ (' # MightyId ') . data("名字")
或In script标签。
var ItemsList = "@item"
或:
var Items List = @Html.Raw(Json.Encode(object))