簡體   English   中英

如何防止空白被修剪?

[英]How to prevent whitespace from being trimmed?

請查看以下ASP.NET代碼:

<%@ Page Language="C#" %>
<!doctype html>
<html>
    <head>
        <title></title>
    </head>
    <body>
        <p><%Response.Write("This is sentence 1.");%> <%Response.Write("This is sentence 2.");%></p>
    </body>
</html>

我希望它通過將兩個字符串連接在一起來構建一個短段,它們之間有一個空格(請注意<%Response.Write("This is sentence 1.");%>之間的白色字符<%Response.Write("This is sentence 1.");%><%Response.Write("This is sentence 2.");%> )。 但是,我從IIS 7.5獲得的輸出HTML是:

<!doctype html>
<html>
    <head>
        <title></title>
    </head>
    <body>
        <p>This is sentence 1.This is sentence 2.</p>
    </body>
</html>

兩個句子之間不包含空格。 有趣的是,如果我將空格放在第二句中:

<%@ Page Language="C#" %>
<!doctype html>
<html>
    <head>
        <title></title>
    </head>
    <body>
        <p><%Response.Write("This is sentence 1.");%><%Response.Write(" This is sentence 2.");%></p>
    </body>
</html>

然后它繼續到HTML。 但是我希望白色空間在構建組合的代碼中,而不是在它工作的數據中,因為我不知道,當我寫單個句子時,哪些將進入段落或什么訂購。

這是預期的行為,還是我做錯了什么?

更新:

VDWWD指出了一個有趣的評論; 如果我使用<%="..."%>而不是<%Response.Write("...");%>確實將空格繼承到HTML。 但這讓我更加抓狂了,因為這適用於上面發布的簡化測試用例,但不是我的實際用例,看起來更像是這樣:

...
<p><%=TextoWeb("Ponencias", "QuieresSubirTuPonencia?")%><%
var InicioPonencias = Sesión.ElementoTimelinePorNombre("INICIO PONENCIAS");
if (DateTime.Today < InicioPonencias.Fecha) {
    %> <%=TextoWeb("Ponencias", "TextoAntesAperturaPonencias", InicioPonencias.Fecha.ToLongDateHtml(Sesión.Cultura))%><%
}
%></p>
...

請原諒西班牙語和非標准擴展名。 函數TextoWeb根據正在構建的頁面的語言按類別和名稱檢索一些本地化文本, Sesión.ElementoTimelinePorNombre按名稱檢索一些時間軸項目.ToLongDateHtml(System.Globalization.CultureInfo)執行某些語言特定的日期高級格式化添加序數指標之類的東西。 此特定代碼段的目的是向現有段落添加句子,但僅限於當前日期早於特定日期。

問題是我使用<%=(...)%>而不是<%Response.Write(...);%>但是沒有將空格帶到HTML上。

您可以使用HTML實體&#32; 對於一個普通的空間,或者更難忘的&nbsp; 如果需要,可以獲得不間斷的空間。

我不知道剝離背后的確切機制,但很可能它與編譯cshtml的順序有關。 在填充之前,引擎從空標記中剝離空白標記( <p> </p>將是預期的行為。

不要使用Response.Write。 然后空間就在那里。

<%= "This is sentence 1." %> <%= "This is sentence 2." %>

更新

您可能沒有獲得空格,因為您在內聯代碼之間拆分了<% %> 編譯器使它成為一行。 嘗試在代碼后面執行if語句以獲得更清晰的aspx。 或者你是一個三元運營商,那樣也有一個空間。

<p><%=TextoWeb("Ponencias", "QuieresSubirTuPonencia?YYY")%> <%= DateTime.Today < DateTime.Now ? TextoWeb("xxxPonencias", "QuieresSubirTuPonencia?YYY") : "" %></p>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM