html - 需要用参数设置div的背景

标签 html css asp.net asp.net-core-mvc

我目前正在尝试根据用户是否选择了背景来设置我的 div 的背景,并且我可以成功地做到这一点。 但是,我不能做的是通过 CSS 设置 div 的背景,因为我不能在 CSS 中连接字符串,这意味着我可以这样做:

background: url("/uploads/Example.png") !important;

但我做不到。

background: url("/uploads/@Model.Banner")

background: url("/uploads/" + @Model.Banner)

我当前的代码如下所示。

<head>
        @if ("/uploads/" + @Model.Banner != "/uploads/")
        {
        <style>
            :root {
                --url: url("/uploads/@Model.Banner");
}
            .profile-header {
            height: 200px;
            background: var(--url) !important;
                background-size: 100%;
                -webkit-border-radius: 10px !important;
                -moz-border-radius: 10px !important;
                border-radius: 10px !important;
            }
        </style>
        }
        </head>

<div id="main">
    <label class="navigation-bar"><a>Home</a> - <a>Users</a> - <b>Profile</b></label>
    <hr />

    <div class="container profile-header"></div>

.profile-header 存在于另一个带有默认横幅的 .css 文件中,这意味着如果横幅存在,代码中的 CSS 将用于动态更改它。

我想请教如何将 div 的背景设置为路径 + 横幅名称,当前代码不起作用,因为它在进入 IF 语句时没有为 div 设置背景。 谢谢!

最佳答案

如果您将用户添加到相应 View 的 model 中,我假设您会知道用户在 Controller 操作中是否具有 Banner 的值。例如:

public IActionResult Index()
{
    YourModel model = new YourModel();

    ...

    // you could supply a default image or just leave as "url(/uploads/)"
    model.BannerUrl = string.IsNullOrEmpty(model.Banner) ? "url(/uploads/Default.png)" : $"url(/uploads/{model.Banner})";

    return View(model);
}

然后在 View 中:

<head>
@if (!@Model.Banner.Contains("Default.png"))
{
    <style>
        :root {
            --url: @Model.BannerUrl;
         }
        .profile-header {
        height: 200px;
        background: var(--url) !important;
            background-size: 100%;
            -webkit-border-radius: 10px !important;
            -moz-border-radius: 10px !important;
            border-radius: 10px !important;
        }
    </style>
}
</head>

<div id="main">
    <label class="navigation-bar"><a>Home</a> - <a>Users</a> - <b>Profile</b></label>
    <hr />

<div class="profile-header"></div>

或者您可以将其全部内嵌添加(只使用了几种样式,这样您就明白了):

<div style="background:@Model.BannerUrl !important; height: 200px; background-size: 100%"></div>

编辑:

忘了说可以在下面的 View 中工作,但想提供替代选项。

@{
    var url = $"/uploads/" + @Model.Banner;
}

<div style="background: url(@url) !important"></div>

关于html - 需要用参数设置div的背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59593786/

相关文章:

html - Jsoup 不使用 select() 函数显示标签

c# - 在没有警告的情况下使用 ClosedXML 将 Gridview 导出到 Excel : the file you are trying to open is in a different format

asp.net - Session ID 是在服务器端还是客户端生成的?

c# - MVC。由于某种原因,动态 css 样式为空

php - 如何将类名添加到 prestashop 1.7 中的 block

Python CGI 脚本 : Basic HTML Form With Two Submit Buttons

asp.net - sql注入(inject)问题

html - 右对齐文本并将其旋转到右边缘

php - 我无法在我的 PHP 页脚文件中引用我的 CSS 样式表

css - 如何清理乱七八糟的样式表?