简体   繁体   中英

How can I put whitespace in the javascript string when I make a dynamic class name?

I'am using Javascript in ASP.NET MVC. I need to make class name dynamically which includes whitespace, but it doesn't work.

The result becomes

<script class="carousel-item" active="">

rather than

<script class="carousel-item active">

Below is the code block.

@for (var i = 0; i < Model.Banners.Count; i++)
{
                    var className = "carousel-item";
                    if (i == 0)
                    {
                        className += " active";
                    }

                    var srcName = "";
                    if (Model.Banners[i].Image != null)
                    {
                        srcName = "data:image;base64," + @System.Convert.ToBase64String(Model.Banners[i].Image);
                    }

                    <div class=@className>
                        <img class="d-block img-fluid" src=@srcName/>
                    </div>
}

You're missing quotes around @className in <div class=@className> , try <div class="@className"> instead.

You should also add quotes around @srcName too in the img tag

<div class="@className">
    <img class="d-block img-fluid" src="@srcName"/>
</div>

Explanation

Without the quotes <div class="@className"> will render

<div class=carousel-item active>

Which gets interpreted as

<div class="carousel-item" active="">

Actually you are missing the quotes("") for html attribute, the correct html syntax is attr1="value1, value2", and you are making it as attr1=value1 value2.

Try:

<div class="@className">
    <img class="d-block img-fluid" src="@srcName"/>
</div>

Or:

var className = "\"carousel-item";
if (i == 0)
{
    className += " active";
}
className += "\"";

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM