2017-03-04 90 views
-2

我正在嘗試通過MVC進行簡單應用。這裏是我的代碼 -無法將模型類型轉換爲布爾型

//模型

public class EmployeeModel 
    { 
     public int empID { get; set; } 
     public Gender genderEmployee { get; set; } 
    } 

    public enum Gender 
    { 
     Male, 
     Female 
    } 

// VIEW

@using EmployeeTest.Models 
    @model EmployeeTest.Models.EmployeeModel 

     <div class="form-group"> 
        @Html.LabelFor(m => m.genderEmployee) 
        <div class="col-lg-10"> 
         @Html.DropDownListFor(m => m.genderEmployee, 
          new SelectList(Enum.GetValues(typeof(Gender))), 
          "Select Gender") 
        </div> 
     </div> 

//控制器

EmployeeInfo objInfo= new EmployeeInfo() 
        { 
         empName = empModel.empName, 
         Gender = empModel.genderEmployee, 
         dateOFBirth = empModel.dateOfBirth, 
         IsActive = empModel.isActive, 
        }; 

我得到的控制器代碼錯誤,在下面給出 - 不能隱式地將類型'EmployeeTest.Models.Gender'轉換爲'bool?'

在數據庫中,性別的數據類型是位。

+0

你在給我們提供的線上有錯誤嗎?在新的EmployeeInfo?我覺得這裏缺少一些東西。 – dbraillon

+0

嗯,我沒有錯過,但得到通過改變代碼解決方案little- 公共枚舉性別 { 男= 1, 女= 0 } 性別= Convert.ToBoolean(empModel.genderEmployee) –

+1

如果你表現出類EmployeeInfo的錯誤將是明確的 – Steve

回答

0

我認爲EmployeeInfo對象具有bool? Gender屬性。這就是說你不能將Gender genderEmployee轉換爲bool? Gender。您需要將Gender = empModel.genderEmployee替換爲Gender = (bool?) empModel.genderEmployee

-1

小片的模型和控制器代碼更改解決了我的問題

public enum Gender 
    { 
     Male=1, 
     Female=0 
    } 


Gender = Convert.ToBoolean (empModel.genderEmployee) 
+2

不清楚這個帖子如何與問題相關(因爲問題根本沒有關於「Gender」的信息),並且通常看起來像一個糟糕的建議 - 爲什麼「gender」將會是布爾值(「false」意味着缺乏性別?),爲什麼人們會使用這樣一個脆弱的構造來鑄造枚舉來布爾呢? –

0

更改模型,以便更好地與您的數據庫(位)將工作更好地協調。沒有理由使枚舉複雜化。嘗試是這樣的:

public class EmployeeModel 
    { 
     public int empID { get; set; } 
     public bool IsMale { get; set; } 
    } 

如果您仍然需要使用其他原因枚舉在您的視圖/控制器分配值到EmployeeInfo() 對象時,你可以做一個明確的轉換。

相關問題