我有兴趣将Spark用于我的开源宠物项目,该项目使用asp.net mvc框架运行.我想知道是否有人有真正的经验,并知道它与普通的asp.net视图引擎相比如何表现?
我知道marketwatch.com运行asp.net mvc和Spark.
我正在玩ASP.NET MVC,我发现有一些替代视图引擎可供它使用,例如NHaml和Spark.我的问题是你为什么要使用备用视图引擎?有这样的事情,我认为没有好处:
<ul if="products.Any()">
<li each="var p in products">${p.Name}</li>
</ul>
<else>
<p>No products available</p>
</else>
Run Code Online (Sandbox Code Playgroud)
使用Spark视图引擎(从那以后,我没有使用Spark来验证这一点并且可能完全错误,因为你将代码作为字符串传递,所以你不会得到Intellisense)和:
<% if products.Any() { %>
<ul>
<% foreach (var p in products) { %>
<li><%= p.Name %></li>
<% } %>
</ul>
<% } else { %>
<p>No products available</p>
<% } %>
Run Code Online (Sandbox Code Playgroud)
使用内置的ASP.NET MVC模板格式(虽然我承认悬挂的大括号非常难看).有没有合理的理由除了不喜欢"gator"标签(或悬挂花括号)以考虑使用备用视图引擎?或者它是否很酷,因为它是新的东西?
如何修改ASP.NET MVC 2.0项目以使用Spark View引擎?
我试着像这里描述的那样:http: //dotnetslackers.com/articles/aspnet/installing-the-spark-view-engine-into-asp-net-mvc-2-preview-2.aspx
但不知何故,它仍然试图路由到.aspx文件.
这里是我的global.asax的代码:
public class MvcApplication : System.Web.HttpApplication
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);
}
protected void Application_Start()
{
SparkViewFactory svf = new SparkViewFactory();
PrecompileViews(svf);
AreaRegistration.RegisterAllAreas();
RegisterRoutes(RouteTable.Routes);
}
public static void PrecompileViews(SparkViewFactory svf)
{
var controllerFactory = svf;
var viewFactory = new SparkViewFactory(controllerFactory.Settings);
var batch …Run Code Online (Sandbox Code Playgroud) 刚刚看到了瞥见工具(getglimpse.com),并希望在我的Spark驱动的网站(VS2010,MVC3)上试用它,但是在第一个障碍时就会失败.当我运行我的网站时,我收到以下错误:
Unable to cast object of type 'Glimpse.Net.Plumbing.GlimpseView' to type 'Spark.ISparkView'.
Run Code Online (Sandbox Code Playgroud)
不知道这是一个Glimpse问题还是Spark问题,但是由于Glimpse看起来像一个很酷的工具,所以想要对它进行排序.
我正在开发一个Spark已被用作View引擎的项目,并决定切换到Razor.
我已经设法让Razor和Spark在一个项目中并肩工作.唯一的问题是当我创建一个Razor视图时,它显然不会从Spark主布局继承布局和样式.
无论如何我可以在不创建Razor副本的情况下执行此操作吗?
我正在努力解决ASP.NET MVC中缺少CheckBoxList的问题.我已经达到了可以渲染Enum值列表的程度,但我仍然坚持如何根据我的模型设置checked属性 - 在这种情况下,是一个具有IList of Role实体的User实体.角色id对应于枚举值.
此示例使用Spark View Engine语法,但它在功能上与标准ASP.NET MVC视图引擎相同("$("与"<%="或"<%"相同)
<for each="var r in Enum.GetValues(typeof(UserRole))">
<label><input type="checkbox" name="Roles" value="${(int)r}" checked="[How-The-Heck-To-I-Get-This?]" />${r}</label>
</for>
Run Code Online (Sandbox Code Playgroud) 使用ASP.NET MVC和Spark,我有一个列出了大量搜索的视图.该视图顶部有以下声明:
<viewdata model="IEnumerable<SearchModel>" />
Run Code Online (Sandbox Code Playgroud)
在同一个搜索页面上,我还渲染了一个部分,用作弹出窗口的内容,使用户可以添加新的搜索.
我的问题是:在局部视图中我想使用强类型HTML帮助器并写:
${Html.TextBoxFor(model => model.SearchPhrase)}
Run Code Online (Sandbox Code Playgroud)
但当我添加另一个:
<viewdata model="CreateSearchModel" />
Run Code Online (Sandbox Code Playgroud)
在部分视图文件的顶部,Spark失败,只能声明一个viewdata模型.
我可以使用普通的HTML帮助程序,但是如何在这个局部视图中获得使用强类型HTML帮助程序的好处 - 或者有更好的方法吗?
在我的asp.net mvc(带有spark视图引擎)项目昨天推送到我们的实时服务器后,我开始遇到一个奇怪的错误.一切都运行良好,但在一段时间后(可能是30分钟),视图开始抛出"动态视图编译失败"错误并抱怨名称空间不存在.列出的命名空间的程序集位于bin中(因为它最初工作).我在同一个盒子上运行的其他网站上使用了spark视图引擎,但似乎从来没有这个问题.是什么导致这些观点停止工作?
我们正在逐步迁移基于Spark的项目以使用Razor,我遇到了一些我似乎无法找到答案的东西.
我的Spark master中的行调用了一个子视图
<Sidebar>
<segment name="header">
<div> <!-- header content--> </div>
</segment>
<segment name="content">
<div> <!-- content content--> </div>
</segment>
</Sidebar>
Run Code Online (Sandbox Code Playgroud)
边栏火花看起来像这样
<div id="sidebar" >
<div class="header">
<render segment="header">
<!-- placeholder -->
</render>
</div>
<div class="ui-layout-content content">
<render segment="content">
<!-- placeholder -->
</render>
</div>
Run Code Online (Sandbox Code Playgroud)
这将呈现第二部分布局中显示的第一部分内容.有没有什么方法可以使用Razor重新创建它.我可以看到我需要使用Partials,但我看不到如何将内容传递到侧边栏子视图中.
基本上我正在尝试重新创建Spark调用Segments(或之前的Sections)的功能http://sparkviewengine.com/reference/elements#segmentpreviouslyknownassection
编辑:更多信息.我有一个Index.cshtml从Application.cshtml获取它的布局.在这里,我有标记代码进入Sidebar.cshtml部分.
如果我@section header在我的Index.cshtml文件中添加put (在Sidebar.cshtml中呈现),则它不会将其识别为有效部分.我有@RenderSection("header", false)我的Sidebar.cshtml文件.
我如何将这两个绑在一起?
所以我的层次结构如下
Application.cshtml - 全局页面布局
Index.cshtml - 包含侧边栏内容的页面布局
Sidebar.cshtml - 来自Index.cshtml的侧边栏内容的模板/ layoout
例如
在Index.cshtml中
@RenderPage("Sidebar")
@section SidebarHeader { <!--Title or something --> }
@section …Run Code Online (Sandbox Code Playgroud)