渲染JavaScript服务器端
我想在服务器上创建一个非常简单的脚本(服务器端事件的客户端代理)。 什么是渲染脚本服务器端使用MVC4最常见的方式?第一个答案后渲染JavaScript服务器端
更新: 我想包括例如@Scripts.Render("~/eventAggregation/events")
,它应该调用我的服务器上的代码,用C#代码生成JavaScript,也这是为一个lib,所以我不能用剃刀做页面或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
。简单地写一个静态的启动类:
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>
有束和RenderSection和@ Scripts.Render(
例如:
"@RenderSection("Scripts", true)".
你想传递下来的服务器端代码渗入到你的UI层
例子:
data-attributes or id's to elements and grab them in JavaScript。
<div id="MightyId" data-name="@item.attribute"></div>
$( '#MightyId')。数据( '名称')
或者在脚本标签。
var ItemsList = "@item"
OR:
var Items List = @Html.Raw(Json.Encode(object))
请参阅更新 – Anders 2013-05-14 07:46:38
我我从来没有使用它,但从我的理解,'Node.js'用于此。 – 2013-05-14 01:15:18
您希望我将后端更改为Node.js? – Anders 2013-05-15 08:09:45