2017-06-13 60 views
0

我是這個品牌的新手。使用MVC 5,.NET 4.5.1和Entity FrameWork 6.1.3。我從一個Oracle數據庫開始。MVC 5:如何在視圖中顯示字符串而不是數字

有一個稱爲Activity的字段,當前是一個小數字段。我想顯示「不活動」或「活動」取決於它是否爲0或1.

我可以在視圖中使用If語句執行此操作,但我有索引,編輯,細節和創建我將不得不修改,如果是編輯和創建視圖,則需要輸入並將其轉換回小數。

有沒有更簡單的方法來做到這一點?

型號:

[DisplayName("Active")] 
    public decimal? ACTIVE { get; set; } 

查看:

@if (Html.DisplayFor(modelItem => item.ACTIVE).Equals("0")) 
{ 
    @:Inactive 
} 
else 
{ 
    @:Active 
} 
+0

如果你關注的是重複佈局代碼,考慮使用'[ UIHint]'屬性。 https://www.iambacon.co.uk/blog/use-display-and-editor-templates-ftw –

回答

1

通過採用HTML助手的優勢,可以減少HTML標籤的繁瑣的打字,你必須執行,以創建一個標準的HTML頁面

示例代碼按您的要求的量:

在你看來:

@Html.ActiveOrInactive(item.ACTIVE) 

助手擴展代碼:

public static MvcHtmlString ActiveOrInactive(this HtmlHelper htmlHelper, decimal invNo) 
{ 
    var text = (invNo == 0) ? "InActive" : "Active"; 
    return new MvcHtmlString(text); 
} 

注:沒有測試的代碼,並希望它會工作

有關助手擴展更多信息:https://docs.microsoft.com/en-us/aspnet/mvc/overview/older-versions-1/views/creating-custom-html-helpers-cs

+1

很酷。我不知道這種技術。這應該是有用的。 –

+0

酷開心,它有用.. :) –

0

在模型中,對於十進制屬性,你可以寫兩個組自定義代碼和得到的,就沒有必要進行更改查看任何。

get 
    { 
     return this.isActive==1? "Active":"InActive"; 
    } 
    set 
    { 
     this.isActive = value=="Active"?1:0; 
    } 

否則使用此屬性的枚舉!

+0

哦,不錯。我認爲這需要在模型層面完成。我會給這個鏡頭。 –

+0

更新:它似乎沒有工作。它不會讓我返回一個字符串來獲取或測試集合中的字符串值。 「不能將類型字符串隱式轉換爲十進制類型。」和「運算符==不能應用於十進制和字符串類型的操作數」。 –

0

您只需創建一個方法從十進制轉換成字符串,反之亦然,並用它在你的查看和/或控制器。

public static string DisplayStatus(decimal? number) 
{ 
    return number == 1 ? "Active" : "Inactive"; 
} 

public static decimal ConvertStatus(string status) 
{ 
    return status == "Active" ? 1 : 0; 
} 
相關問題