如何在MVC Razor文件中禁用或修改自动格式化?

如何在MVC Razor文件中禁用或修改自动格式化?,razor,visual-studio-2013,Razor,Visual Studio 2013,我有一个应用程序,其中我们使用razor引擎返回XML,下面是我目前正在处理的部分视图的示例: @{ var includeNamespace = ViewData["includeNamespace"] != null && (bool)ViewData["includeNamespace"]; } @if (Model != null) { <Model @{if (includeNamespace){<text>xmlns="@Htm

我有一个应用程序,其中我们使用razor引擎返回XML,下面是我目前正在处理的部分视图的示例:

@{   
    var includeNamespace = ViewData["includeNamespace"] != null && (bool)ViewData["includeNamespace"];
}
@if (Model != null)
{
    <Model @{if (includeNamespace){<text>xmlns="@Html.RenderNamespace()"</text>}}>
        <DateFieldOne>@Html.EncodeDate(Model.DateFieldOne)</DateFieldOne>
        <FieldTwo>@Html.Encode(Model.FieldTwo)</FieldTwo>
        @if (Model.FieldThree != null)
        {
            <FieldThreeCollection>
                @foreach (var fieldThree in Model.FieldThree)
                {
                    <FieldThree>
                        <SubFieldOne>@Html.Encode(fieldThree.SubFieldOne)</SubFieldOne>
                        <SubDateFieldTwo>@Html.EncodeDate(fieldThree.SubDateFieldTwo)</SubDateFieldTwo>
                        <SubFieldThree>@fieldThree.SubFieldThree</SubFieldThree>
                        <SubFieldFour>@fieldThree.SubFieldFour</SubFieldFour>
                    </FieldThree>
                }
            </FieldThreeCollection>
        }
        @if (Model.CanUpdate)
        {
            <link rel="Cancel" verb="POST" href="@Html.UriHelper().BuildUri("someEndpoint/{0}/cancel", Model.Id)"/>
        }
  </Model>
}
@{
var includeNamespace=ViewData[“includeNamespace”]!=null&(bool)ViewData[“includeNamespace”];
}
@如果(型号!=null)
{
@EncodeDate(Model.DateFieldOne)
@Encode(Model.FieldTwo)
@如果(Model.FieldThree!=null)
{
@foreach(Model.fieldThree中的变量fieldThree)
{
@Html.Encode(fieldThree.subfielddone)
@EncodeDate(fieldThree.SubDateFieldTwo)
@字段三。子字段三
@字段三。子字段四
}
}
@if(Model.CanUpdate)
{
}
}
我看到的奇怪行为是,当我粘贴
{if(includeNamespace){xmlns=“@Html.RenderNamespace()”}
部分时,visual studio重新格式化了视图并删除了xml元素中的所有大小写;例如:

@{
    var includeNamespace = ViewData["includeNamespace"] != null && (bool)ViewData["includeNamespace"];
}
@if (Model != null)
{
    <model @{if (includeNamespace) { <text> xmlns="@Html.RenderNamespace()" </text> }}>
        <datefieldone>@Html.EncodeDate(Model.DateFieldOne)</datefieldone>
        <fieldtwo>@Html.Encode(Model.FieldTwo)</fieldtwo>
        @if (Model.FieldThree != null)
        {
            <fieldthreecollection>
                @foreach (var fieldThree in Model.FieldThree)
                {
                    <fieldthree>
                        <subfieldone>@Html.Encode(fieldThree.SubFieldOne)</subfieldone>
                        <subdatefieldtwo>@Html.EncodeDate(fieldThree.SubDateFieldTwo)</subdatefieldtwo>
                        <subfieldthree>@fieldThree.SubFieldThree</subfieldthree>
                        <subfieldfour>@fieldThree.SubFieldFour</subfieldfour>
                    </fieldthree>
                }
            </fieldthreecollection>
        }
        @if (Model.CanUpdate)
        {
            <link rel="Cancel" verb="POST" href="@Html.UriHelper().BuildUri("someEndpoint/{0}/cancel", Model.Id)" />
        }
    </model>
}
@{
var includeNamespace=ViewData[“includeNamespace”]!=null&(bool)ViewData[“includeNamespace”];
}
@如果(型号!=null)
{
@EncodeDate(Model.DateFieldOne)
@Encode(Model.FieldTwo)
@如果(Model.FieldThree!=null)
{
@foreach(Model.fieldThree中的变量fieldThree)
{
@Html.Encode(fieldThree.subfielddone)
@EncodeDate(fieldThree.SubDateFieldTwo)
@字段三。子字段三
@字段三。子字段四
}
}
@if(Model.CanUpdate)
{
}
}

当我输入这个问题时,我意识到它这样做是因为它需要的是元素不大写的html,所以现在我的问题是:有没有办法阻止Razor这样做?

Visual Studio默认将cshtml文件格式化为html。在html中,标记的起始字母使用小写是标准的。要更改此行为,必须更改所有HTML文档的设置

在“工具”菜单上打开“选项”。然后从左侧展开“Text Editor/HTML/Advanced”。将“粘贴时的格式”设置为false


遗憾的是,我想不出任何方法来禁用单个文件的这种行为。

一种帮助方法是右键单击解决方案中的cshtml文件,然后选择“使用…打开”,然后选择“源代码(文本)编辑器”(先关闭文件)

一个更持久的修复方法是从“工具”菜单打开“选项”,选择“文本编辑器”,然后选择“文件扩展名”。然后在“扩展名”框中输入“cshtml”,并从列表中选择“脚本编辑器”,然后按“添加”,然后重新打开文件


这种方法的问题是你失去了所有的智能感知功能。

有趣的是,我发现设置几乎与你发布答案的时间完全一致。我不敢相信没有其他人能更快地找到答案。