标签: viewengine

混合spark和webform视图引擎

是否可以使用多个视图引擎?我有一个已经在使用webforms视图引擎的大型(ish)网站,但我们希望转向引发新功能.

这支持吗?任何在线文档详细说明如何做到这一点?

asp.net-mvc viewengine spark-view-engine

7
推荐指数
1
解决办法
464
查看次数

有没有办法用asp.net mvc Razor ViewEngine制作一个@section可选?

我有一个类似于以下的Page.cshtml(不起作用):

@{
    Layout = "../Shared/Layouts/_Layout.cshtml";
    var mycollection = (ViewBag.TheCollection as IQueryable<MyCollectionType>);
}

<h2>@ViewBag.Title</h2>

content here

@if (mycollection != null && mycollection.Count() > 0)
{    
    @section ContentRight
    {    
        <h2>
            Stuff
        </h2>
        <ul class="stuff">
            @foreach (MyCollectionType item in mycollection )
            {
                <li class="stuff-item">@item.Name</li>
            }
        </ul>
    }
}
Run Code Online (Sandbox Code Playgroud)

正如我所说,这不起作用.如果集合中没有任何内容,我想不定义该部分.有没有办法让这样的工作?如果没有,我的其他选择是什么?我对这款Razor ViewEngine非常陌生.

编辑

在我的布局中我有:

@if(IsSectionDefined("ContentRight")) 
{
    <div class="right">
        RenderSection("ContentRight")
    </div>
}
Run Code Online (Sandbox Code Playgroud)

我不想要的是当该部分为空时输出的div.

asp.net-mvc viewengine razor

7
推荐指数
1
解决办法
6120
查看次数

.NET MVC自定义视图引擎布局

在方法中的自定义视图引擎中FindView,如何查看Layout使用的?masterName总是空的.

ViewEngineResult FindView(ControllerContext controllerContext, string viewName, string masterName, bool useCache) {
    // How do I get WebViewPage.Layout to know what layout is used?
}
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc layout viewengine

7
推荐指数
1
解决办法
625
查看次数

Razor ViewEngine是否缓存渲染的HTML?

我有一个2级菜单项:我有一个部门列表,每个部门都有一个商店列表.

我有一个菜单,PartialView,它遍历Model(部门)并构建菜单:

@model IEnumerable<Department>

<ul>
    @foreach (var department in Model)
    {
        <li>
            <a href="#">@Model.DepartmentName</a>
            <ul>
                @foreach (var store in department.Stores)
                {
                    <li><a href="some-url">@store.StoreName</a></li>
                }
            </ul>
        </li>
    }
</ul>
Run Code Online (Sandbox Code Playgroud)

这就是我在我的菜单中调用Menu PartialView的方式_layout.cshtml:

@Html.Partial("Shared/_Menu", MyApplicationCache.departments) 
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我在所有请求上将相同的模型(从缓存)传递给PartialView.

Razor ViewEngine是否有内部缓存系统来识别此视图是否已为此模型构建(符合HTML字符串)?或者它是否在每个请求上重新渲染(重新编译)PartialView?

asp.net-mvc partial-views viewengine razor

7
推荐指数
1
解决办法
529
查看次数

替代asp.net MVC视图引擎

我想知道是否对asp.net MVC的"最佳"替代视图引擎有一个普遍的共识.到目前为止,我知道Spark,Brail,NHaml,但其他人呢?

asp.net asp.net-mvc viewengine spark-view-engine

6
推荐指数
1
解决办法
2154
查看次数

ASP.NET MVC是否可以从数据库中提取的模板中呈现视图?

我要做的是使用不同的模板生成电子邮件内容.

我认为ASP.NET MVC可能非常适合这种情况.我的控制器将获取电子邮件的必要数据并决定要呈现的视图(模板).(这只是一个简单的邮件合并,需要有条件块,foreach等)

我希望能够将这些模板存储在数据库中而不是Web应用程序中的文件中,因此可以从Web应用程序本身轻松添加新模板.

这可能吗?我希望能够使用WebForms视图引擎,但如果不可能,则会考虑其他视图引擎.我希望使用键入的视图.

asp.net-mvc viewengine

6
推荐指数
1
解决办法
930
查看次数

ASP.NET MVC ViewEngine ViewLocationCache.GetViewLocation返回null

我正在关注Chris Pietschmann 在ASP.NET MVC中使用主题解决方案.

我注意到的一件事是在后续请求中没有从ViewLocationCache中检索视图名称.我正在使用ASP.NET MVC 2.0 RC

执行以下代码时:

this.ViewLocationCache.InsertViewLocation(controllerContext.HttpContext, cacheKey, virtualPath);
Run Code Online (Sandbox Code Playgroud)

我将鼠标悬停在this.ViewLocationCache上它只返回{System.Web.Mvc.NullViewLocationCache} - 建议什么都没有添加?

asp.net asp.net-mvc viewengine

6
推荐指数
1
解决办法
1068
查看次数

如果我在ViewEngines集合中有多个引擎,MVC3如何选择使用哪个ViewEngine?

我有一个内部开发的自定义视图引擎.在同一个项目中,我想将Razor用于某些页面,将我的自定义引擎用于某些页面.MVC框架如何选择使用哪个引擎?顺便说一下,我的自定义引擎不需要任何模板,它根据数据库中的元数据呈现页面.对于我的自定义引擎,我不想设置任何模板文件.我期待的是应该有一种方法来驱动框架使用基于控制器名称和操作名称的特定引擎.这种灵活性是否存在于MVC3中?

viewengine asp.net-mvc-3

6
推荐指数
1
解决办法
1271
查看次数

在ASP.NET MVC中找不到覆盖的视图路径(位置格式)的共享布局

我正在对视图,控制器和模型进行分组.结构是

~/Controllers
-- /_Shared
--  -- /Views
--  -- /Content
--  -- /Scripts
-- /Home
-- -- /Models
-- -- /Content
-- -- /Scripts
-- -- /Views
-- -- HomeController.cs
-- /Account
-- -- /Models
-- -- /Views
...
Run Code Online (Sandbox Code Playgroud)

浏览与工作的部分观点,但布局(母版视图)工作.当我在.cshtml文件中指定布局时,如:

@{ Layout = "SimpleSharedLayout"; }
Run Code Online (Sandbox Code Playgroud)

我收到此错误:在以下路径中找不到布局页面"SimpleLayout":

"〜/控制器/帐号/浏览/ SimpleSharedLayout".

Asp.NET只搜索当前控制器目录中的布局,而不查看共享文件夹*(位于〜/ Controllers/_Shared/Views)*

虽然这很好用.

@Html.Partial("SharedPartialView")
Run Code Online (Sandbox Code Playgroud)

我必须指定具有完整路径的布局

@{ Layout = "~/Controllers/_Shared/Views/SimpleSharedLayout.cshtml"; }
Run Code Online (Sandbox Code Playgroud)

这不是一件很难的事情,但我为能够让它无法工作而感到疯狂.

使用IIS Express,VS 2012,.NET 4.5

你对我失踪的东西有所了解吗?

我的视图引擎:

public class AreaViewEngine : RazorViewEngine
{
    public AreaViewEngine() …
Run Code Online (Sandbox Code Playgroud)

c# asp.net asp.net-mvc path viewengine

6
推荐指数
1
解决办法
982
查看次数

将部分视图渲染为字符串MVC4

我使用以下内容呈现字符串的局部视图...

        protected string RenderPartialViewToString(string viewName, object model)
    {
        if (string.IsNullOrEmpty(viewName))
            viewName = ControllerContext.RouteData.GetRequiredString("action");

        ViewData.Model = model;

        using (var sw = new StringWriter())
        {
            ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, viewName);
            var viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw);
            viewResult.View.Render(viewContext, sw);

            return sw.GetStringBuilder().ToString();
        }
    }
Run Code Online (Sandbox Code Playgroud)

然而它返回带有如下所示的奇怪标签的html ...(我已经包含了一个小部分作为它的大视图)

<$A$><div</$A$><$B$> class="modal hide fade"</$B$><$C$> id="dialog"</$C$><$D$> 
Run Code Online (Sandbox Code Playgroud)

整个HTML都会发生这种情况.这部分看起来应该是......

<div class="modal hide fade" id="dialog" style="display: none;">
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc viewengine stringwriter asp.net-mvc-partialview asp.net-mvc-4

6
推荐指数
2
解决办法
1万
查看次数