簡體   English   中英

true而不是True(C#)

[英]true instead of True (C#)

目標

從Controller到View返回true而不是True

問題

我將一個布爾值存儲到變量中,該布爾值指示產品是否存在於購物車/摘要中。

要實現這一點,我正在做以下事情:

[...]
IsAdded = sessionStore.CheckExistanceOnSummary(product.productId)
[...]

但是,當我在View上顯示IsAdded的值時,返回為TrueFalse - 並且JavaScript期望為truefalse

我需要的是發送truefalse而不是C#發送的方式。

我已經嘗試過的

我已經嘗試為此更改上面的代碼片段:

IsAdded = (sessionStore.CheckExistanceOnSummary(product.productId) ? 
    "true" : 
    "false")

但調試器返回以下錯誤:

錯誤5無法將類型'string'隱式轉換為'bool'

幾行代碼

CheckExistanteOnSummary的實現是:

public bool CheckExistanceOnSummary(Nullable<int> productId)
{
    List<Products> productsList = 
        (List<Products>)Session[summarySessionIndex];

    if (productsList.Where
        (product => product.id == (int)productId).FirstOrDefault() == null)
        return false;
    else
        return true;
}

復制?

我讀了這個主題 ,但沒有幫助我。

作為布爾值( bool ),值將始終為“True”或“False”。 如果要在轉換為字符串時以不同方式表示它們,可以在視圖中執行以下操作:

@Model.IsAdded.ToString().ToLower()

這不起作用,因為IsAdded是布爾值,“true”是字符串

IsAdded = (sessionStore.CheckExistanceOnSummary(product.productId) ? 
    "true" : 
    "false")

嘗試在javascript中使用它將其轉換為Lowcase()。

為了可重用性,您可以為bool創建一個“true”/“false”的顯示模板:

  1. 創建一個名為“JsBoolean.cshtml”的顯示模板:

  2. 在您的視圖中,使用@Html.DisplayFor()並指定新模板。

JsBoolean.cshtml:

@model Boolean

@(Model ? "true" : "false")

在你看來:

@Html.DisplayFor(m => m.IsAdded, "JsBoolean")

使用此方案,您為javascript目的添加了“可重用性”。 您也可以使用此(如果需要)將布爾值顯示為“是”或“否”或其他內容。

編輯:

如果您的布爾值始終為小寫,則可以通過將其自定義視圖稱為“Boolean.cshtml”來使其成為默認視圖。 然后,您可以簡化您的使用:

@Html.DisplayFor(m => m.IsAdded)

您可以添加一個額外的只讀屬性(例如jsIsAdded),它返回IsAdded.ToString()。ToLower()。

也許您可以合並以下代碼:

IsAdded.ToString().ToLower();

有點像:

public string JSCheckExistanceOnSummary(Nullable<int> productId)
{
    return  CheckExistanceOnSummary(productId).ToString().ToLower();
}

你能用一點嗎? 無論這種方式如何,都是0或1。 大多數bool也很有可能(例如檢查sql)

暫無
暫無

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

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