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

标签 razor visual-studio-2013

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

@{   
    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>
}

我看到的奇怪行为是当我粘贴 @{if (includeNamespace){<text>xmlns="@Html.RenderNamespace()"</text>}} 时部分 Visual Studio 重新格式化了 View 并从 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>
}

当我输入这个问题时,我意识到它这样做是因为它期望 html 中的元素没有大写,所以现在考虑到这一点,我的问题变成了:有什么办法可以阻止 Razor 这样做?

最佳答案

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

在“工具”菜单上打开“选项”。然后从左侧展开“文本编辑器/HTML/高级”。将“粘贴格式”设置为 false。

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

关于razor - 如何禁用或修改 MVC Razor 文件中的自动格式化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27279915/

相关文章:

asp.net-mvc-3 - 动态加载部分 View

c# - 分配给对象的动态属性

javascript - 使用 JavaScript 和 MVC/Razor 将 Kendo 控件绑定(bind)到 HtmlHelper 控件

qt - 在windows上部署Qt5应用程序的问题

c++ - 无法在 CppUnitTestFramework (VS2013) 中运行测试

azure - WIF10201 : No valid key mapping found for securityToken: 'System.IdentityModel.Tokens.X509SecurityToken' - Signing key rollover working a expected

c++ - 为什么我们在 Visual Studio 2013 中引用 C++ 项目?

c# - 如何开始使用 Windows Phone SDK 8.1?

c# - 带有 For 循环内表单的 MVC View 提交空模型

javascript - 空字符串传递给 jquery.unobtrusive-ajax.js 中的 getElementById() :16