【问题标题】:.Core mvc published app partial views doesnt work in ASPNETCORE_ENVIRONMENT "production" but working fine with "development".Core mvc 发布的应用程序部分视图在 ASPNETCORE_ENVIRONMENT “生产”中不起作用,但在“开发”中工作正常
【发布时间】:2019-09-18 15:05:53
【问题描述】:

当我发布我的 .core mvc 应用程序时,无论我是通过 .exe 还是在 IIS 中午餐,我的自定义局部视图都不会呈现。这就是它的外观(当我在本地调试它或发布到 .exe 并将环境更改为开发时): 这是在生产环境中发布后的样子: 我注意到,在使这个部分视图出现在工作示例 url 中的触发事件之后没有改变(这就是我想要的)并且看起来像这样 https://localhost:5002/CharacterAndItems/Index 但在第二个它改变了https://localhost:5002/CharacterAndItems/GetCharacter 我不知道是什么导致了这个问题。这是我的控制器代码:

[HttpPost]
public async Task<IActionResult> GetCharacter([FromForm] CharacterFindViewModel characterFindModel)
{
   var character = await _characterSerivce.GetCharacterByNameAsync(characterFindModel.CharacterName);
   var item = await _itemSerivce.GetItemNameReturnItem(characterFindModel.ItemName, character);

    model = new CharacterWithItemViewModel { character = character, item = item };
    return PartialView("_CharacterPartial", model);
}

部分查看代码:

@model App.ViewModels.CharacterWithItemViewModel

<div class="row form-group" style="margin-top:15px">
    <div class="col-md-6">
        <div class="text-right">
            <div>
                <div class="text-left align-top">
                    Name: @Model.character.CharName CharacterId: @Model.character.ObjId ItemId: @Model.item.ItemId 
                    <div id="Test">
                        Count: @Model.item.Count
                    </div>
                    </div>
            </div>
        </div>
    </div>
    <div class="col-md-6 text-right">
        <form asp-controller="CharacterAndItems" asp-action="AddItems"
              data-ajax="true" data-ajax-method="post"
              data-ajax-mode="replace" data-ajax-update="#Test">
            <input type="hidden" name="characterId" value="@Model.character.ObjId" />
            <input type="hidden" name="itemId" value="@Model.item.ItemId" />
            <input class="form" placeholder="Item quantity" name="count" style="text-align:center" />
            <input type="submit" value="Add items" name="add" class="btn btn-primary" />
            <input type="submit" value="Delete items" name="delete" class="btn btn-danger" />
        </form>
    </div>
</div>

@section Scripts {
    <script>
        $.ajax({
            url: '/CharacterAndItems/AddItems',
            type = 'POST',
            data: JSON.stringify(@Model)
        })
        var results = $("#Results");
    </script>
}

【问题讨论】:

    标签: c# asp.net-mvc .net-core asp.net-core-mvc


    【解决方案1】:

    它甚至显示的事实意味着您的部分视图实际上已被提供。从您显示的屏幕截图来看,您似乎缺少 css 文件。

    在 chrome 开发者工具中打开你的 prod 站点并检查你期望的 CSS 文件是否在那里,进一步检查它们是否可以访问。

    在 Core 中,转到您的布局页面,在页眉中,您将看到如下所示的内容。它根据其操作环境告诉它在哪里加载以及加载什么。开发与产品。确保这些是有效的。如果您使用 CDN,请确保您的组织没有阻止 CDN,因为有些组织在其网络周围有规则。

    <environment include="Development">
        <link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.css" />
    </environment>
    <environment exclude="Development">
        <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
              asp-fallback-href="~/lib/bootstrap/dist/css/bootstrap.min.css"
              asp-fallback-test-class="sr-only" asp-fallback-test-property="position" asp-fallback-test-value="absolute"
              crossorigin="anonymous"
              integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T"/>
    </environment>
    

    【讨论】:

    • 是的,你是对的,我的生产布局页面无效,现在一切正常。
    【解决方案2】:

    根据您的屏幕截图,在生产中似乎没有应用样式,这也表明您在必要的 JavaScript 文件方面遇到了类似的问题。但是,我们没有您的布局来查看问题可能是什么。

    我最好的猜测是你有类似的东西:

    <environment include="Development>
        <script src="~/js/script.js"></script>
    </environment>
    <environment exclude="Development>
        <script src="~/js/script.min.js"></script>
    </environment>
    

    我在这里只是使用了一个 JS 文件的示例,但同样的可能也适用于您的 CSS,即生产参考包含一个 .min.js/.min.css 扩展名,而不仅仅是 .js/@ 987654326@.

    默认情况下,没有任何东西可以将您的 JS/CSS 文件压缩为 .min.js/.min.css 版本,因此这些文件可能根本不存在于生产环境中。由于您所有的 JS/CSS 文件引用都是 404,因此您期望的样式和功能也不存在。

    要创建这些文件,您要么需要包含 bundleconfig.json,要么使用 Gulp 或 Grunt 等设置构建任务。

    此外,FWIW,您不能在部分中包含部分,因此 @section 块没有做任何事情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-07
      • 1970-01-01
      • 2015-01-30
      • 1970-01-01
      相关资源
      最近更新 更多