簡體   English   中英

asp.net mvc3如何將字節顯示為字符串? ASP.NET MVC3

[英]Asp.net mvc3 How to display byte as string? Asp.net mvc3

我在員工中將性別屬性設置為Db中的tiny int。 當用戶創建新員工時,我希望他通過單擊單選按鈕選擇男/女(工作正常)。 一切工作正常(創建和編輯),但我想以表格形式顯示(用於索引,詳細信息和刪除),而不是1或2,而是男性/女性。 應該有一些if語句,但是我不確定在哪里放置或如何編寫正確的語句...

任何想法? 謝謝! 這是模型代碼的一部分: 在此處輸入圖片說明

這是來自details.cshtml:

在此處輸入圖片說明

使用condition ? true : false condition ? true : false選擇器

int gender = 1; // assumed male

String genderDesc = (gender == 1) ? "Male" : "Female";

您可以將其設置為下拉字段嗎? 在您的控制器中執行以下操作:

ViewBag.Gender = new[] 
        {
            new SelectListItem { Text = "Male", Value = "1" }, 
            new SelectListItem { Text = "Female", Value = "2" }
        }.WithEmpty();

WithEmpty()將為您提供一個空白選項,否則,您將選擇頂部的空白選項。

@Html.DropDownListFor(m=> m.Gender, (Ienumarable<SelectListItem>)ViewBag.Gender);

這樣,用戶將看到“男性”和“女性”,但是該值將使用值1或2綁定到您的模型。

如果要避免在模型上具有額外的屬性或向視圖包中添加內容,可以使用如下所示的razor語法內聯編寫。

<div class="display-field">
@if (model.GENDER == 0){ @Html.Raw("Male") }
@else if (model.GENDER == 1){ @Html.Raw("Female") }
</div>

那太過頭了,所以您可能需要檢查確切的語法,但是我認為這已經很接近了。 它也只會在div中轉儲“ Male”或“ Female”,您可能希望至少將其放在標簽或p標簽中。

但是,這不是我將在生產應用程序中使用的方法,在整個代碼中,我將使用性別枚舉為您的位值賦予含義,並擴展枚舉以包括您可以出於演示目的而解析的描述。

我認為從您所說的內容來看,您可以使用以下razor語法內聯地編寫它,如下所示。

<div class="display-field">
@if(model.GENDER ==0)
{
 <label>Male</label>
}
else if(model.Gender==1)
{
 <label>Female</label>
}
</div>

如果您需要任何幫助,我認為這足以在詳細信息頁面中顯示性別。

我建議您創建一個ViewModel類,以與數據庫模型分離的View友好格式表示Employee實體,並以強類型視圖顯示它,以便您可以從控制器返回它。

提示:將Gender屬性在ViewModel表示為字符串,並在controller從字節到字符串表示的轉換

您可以將代碼放入控制器中,例如:

public ActionResult EmployeeDetails(int id)

{

   //retrieve the entity from the DB
   //set other employee properties here.
   //I'm assuming you have set males to 2 and females to 1
   ...

   employeeViewObject.Gender = employeeObjectFromDB.Gender.Value==2?"Male":"Female";
   return View(employeeObjectFromDB);

}

您的強類型視圖在顯示性別時不會遇到麻煩,同時避免了混用代碼和標記的麻煩: <p>model.Gender</p>

Html.DisplayFor(model=>model.Gender)

暫無
暫無

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

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