小编Chr*_*sen的帖子

Razor嵌套布局与层叠部分

我有一个使用Razor作为其视图引擎的MVC3站点.我希望我的网站可以换肤.大多数可能的皮肤都足够相似,可以从共享的主布局中获得.

因此,我正在考虑这个设计:

计划视图

但是,我希望能够RenderSection在底层调用_Common.cshtml,并让它渲染一个在顶层定义的部分,Detail.cshtml.这不起作用:RenderSection显然只渲染下一层定义的部分.

当然,我可以定义每个皮肤中的每个部分.例如,如果_Common需要调用RenderSection("hd")中定义的部分Detail,我只需将其放在每个部分中_Skin并且它可以工作:

@section hd {
    @RenderSection("hd")
}
Run Code Online (Sandbox Code Playgroud)

这导致一些代码重复(因为每个皮肤现在必须具有相同的部分)并且通常感觉很乱.我还是Razor的新手,似乎我可能会遗漏一些明显的东西.

调试时,我可以在WebViewPage.SectionWritersStack中看到已定义部分的完整列表.如果我可以告诉RenderSection在放弃之前查看整个列表,它会找到我需要的部分.唉,SectionWritersStack是非公开的.

或者,如果我可以访问布局页面的层次结构并尝试在每个不同的上下文中执行RenderSection,我可以找到我需要的部分.我可能错过了什么,但我认为没有办法做到这一点.

除了我已经概述的方法之外,还有一些方法可以实现这个目标吗?

viewengine razor asp.net-mvc-3

77
推荐指数
2
解决办法
3万
查看次数

31
推荐指数
4
解决办法
3万
查看次数

SQL数据层次结构

我已经查看了一些SQL层次结构教程,但它们对我的应用程序都没有多大意义.也许我只是没有正确理解它们.我正在编写一个C#ASP.NET应用程序,我想从SQL数据创建一个树视图层次结构.

这是层次结构的工作方式:

SQL TABLE

ID     | Location ID | Name
_______| __________  |_____________
1331   | 1331        | House
1321   | 1331        | Room
2141   | 1321        | Bed
1251   | 2231        | Gym

如果ID和位置ID相同,这将决定顶级父级.该父母的任何子女都将拥有与父母相同的位置ID.该孩子的任何孙子女的位置ID都等于孩子的ID,依此类推.

对于上面的例子:

- House
   -- Room
       --- Bed

任何帮助或指导易于遵循的教程将不胜感激.

编辑:

我到目前为止的代码,但只有父母和孩子,没有GrandChildren.我似乎无法弄清楚如何让它以递归方式获取所有节点.

using System;
using System.Data;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Configuration;
using System.Data.SqlClient;

namespace TreeViewProject
{
public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        PopulateTree(SampleTreeView);

    }



    public …
Run Code Online (Sandbox Code Playgroud)

c# sql asp.net tree hierarchy

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

SQL查询:分层合并

我有一个定义层次结构的表:

Create Table [example] (
    id          Integer   Not Null Primary Key,
    parentID    Integer       Null,
    largeData1  nVarChar(max) Null,
    largeData2  nVarChar(max) Null);
    -- largeData3...n also exist

Insert Into [example] (id, parentID, largeData1, largeData2)
Select 1, null, 'blah blah blah', null          Union
Select 2,    1, null,             null          Union
Select 3,    1, 'foo bar foobar', null          Union
Select 4,    3, null,             'lorem ipsum' Union
Select 5,    4, null,             null;
Run Code Online (Sandbox Code Playgroud)

此数据的层次结构图:

层次结构图

我想编写一个查询,它将返回任何给定[id]值的单行.该行应包含该行的[id]和[parentID]信息.它还应包含[largeData1 ... n]字段.但是,如果largeData字段为null,则它应该遍历层次结构,直到遇到该字段的非null值.简而言之,它应该像coalesce函数一样运行,除了行的层次结构而不是一组列.

例:

其中[id] = 1:

id:          1
parentID:    null
largeData1:  blah blah …
Run Code Online (Sandbox Code Playgroud)

sql-server-2005 coalesce hierarchy

8
推荐指数
1
解决办法
1073
查看次数

MSBuild内联任务引用有时是转义括号

我正在为MSBuild编写一个内联任务.它需要参考System.ServiceProcess.dll.

如果我硬编码System.ServiceProcess.dll文件的路径,该任务很有用,如下所示:

<UsingTask
    TaskName="MyTask"
    TaskFactory="CodeTaskFactory"
    AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
    <Task>
        <Reference Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.ServiceProcess.dll" />
        <Code Type="Fragment" Language="cs">...working fine...</Code>
    </Task>
</UsingTask>
Run Code Online (Sandbox Code Playgroud)

但是,我宁愿不硬编码那条路.

如果我只是使用<Reference Include="System.ServiceProcess.dll" />,我会收到一个错误:MSB3755: Could not find reference "System.ServiceProcess.dll"所以我想我必须在这里使用完整路径.

$(FrameworkPathOverride)属性已包含正确的路径,因此我尝试使用它:

<Reference Include="$(FrameworkPathOverride)\System.ServiceProcess.dll" />
Run Code Online (Sandbox Code Playgroud)

但这给了我一个错误:

C:\ path\to\project.csproj(93,3):错误MSB3754:引用程序集"C:\ Program Files%28x86%29\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.ServiceProcess .dll"无效."给定的程序集名称或代码库无效.(HRESULT异常:0x80131047)"[C:\ path\to\project.csproj]

请注意,它是如何逃离(x86)%28x86%29.

值得注意的是,它似乎只是为此而做$(FrameworkPathOverride).如果我定义自己的属性并使用它,它可以正常工作,除非该属性也引用$(FrameworkPathOverride).换句话说,这是有效的(但仍然让我硬编码路径):

<PropertyGroup>
    <MyPath>C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5</MyPath>
</PropertyGroup>

// (later, inside <Task />)
<References Include="$(MyPath)\System.ServiceProcess.dll" />
Run Code Online (Sandbox Code Playgroud)

但是,这会失败并报告搜索路径的相同错误%28x86%29:

<PropertyGroup>
    <MyPath>$(FrameworkPathOverride)</MyPath>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

只是为了踢,我也试过这个变化,也失败了同样的错误:

<PropertyGroup> …
Run Code Online (Sandbox Code Playgroud)

msbuild msbuild-4.0

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

任何好的PowerShell MSBuild任务?

任何人都知道任何好的MSBuild任务将执行PowerShell脚本并传递不同的参数?

我能够找到B#.NET博客:从MSBuild调用PowerShell脚本,但我希望有一些更精致的东西.

如果我找不到任何东西,我当然会继续使用该博客作为首发来磨练自己.

msbuild powershell visual-studio

5
推荐指数
3
解决办法
6338
查看次数