0

这是我的控制器动作:

<EmployeeAuthorize()>
Function HRA_Table() As ActionResult

    ' get current employee's id
    Dim db1 As EmployeeDbContext = New EmployeeDbContext
    Dim user1 = db1.Tbl_Employees.Where(Function(e) e.Employee_EmailAddress = User.Identity.Name).Single()
    Dim empId = user1.Employee_ID
    Dim empSSN = user1.Employee_SSN

    Dim hra = db.Tbl_HRAs.Where(Function(x) x.SSN = empSSN)

    Return View(hra.ToList)

End Function

这是我的模型:

Public Class Tbl_HRA

    <Key()> Public Property HRA_ID() As Integer
    Public Property SSN() As String
    Public Property Height() As Double
    Public Property Weight() As Double
    Public Property Nic_EE() As String
    Public Property Nic_SP() As String
    Public Property BMI() As Double
    Public Property BP_S() As Double
    Public Property BP_D() As Double
    Public Property HDL() As Double
    Public Property LDL() As Double
    Public Property Tot_Chol() As Double
    Public Property Continine() As String
    Public Property Glucose() As Double
    Public Property Waist() As Double
    Public Property Hip() As Double
    Public Property Triglycerides() As Double
    Public Property A1C() As Double
    Public Property LDL_HDL() As Double

End Class

这是我的看法:

@ModelType IEnumerable(Of GemcoBlog.Tbl_HRA)

@Code
    Layout = Nothing
End Code

@For Each item In Model

    @item.Height

Next

我得到的错误是:

'Tbl_HRA' 上的 'Height' 属性无法设置为 'String' 值。您必须将此属性设置为“Double”类型的非空值。

我似乎无法理解为什么会发生此错误。我尝试double根据我阅读的一些文章将其更改为,但仍然无法正常工作!

谢谢你的帮助。

4

4 回答 4

0

这篇文章可能有用 - 看起来您的数据库架构有问题?此列是否在表中设置为可为空?

http://digitaltoolfactory.net/blog/2012/03/how-to-fix-yet-another-you-must-set-this-property-to-a-non-null-value-of-type-double-实体框架问题/

于 2012-10-03T12:44:54.810 回答
0

我想这会对你有所帮助

<ul>
    @For Each g As MvcApplication1.Genre In Model
        @<li>@g.Name</li>
    Next
</ul>

并查看此网址以获得更多帮助

http://www.asp.net/web-pages/tutorials/basics/asp-net-web-pages-visual-basic

于 2012-10-03T12:51:20.803 回答
0

看起来这可能是由该数据库引起的。看起来他们将这些设置为 varchar 而不是 double ,这并不理想。

于 2012-10-03T13:14:52.223 回答
0

从您的评论来看,表中的列似乎是一个 varchar。因此,您的模型必须将其定义为字符串。尝试将 height 属性更改为如下:

 Public Property Height() As String

不幸的是,您不能直接在 LINQ to SQL 实现中进行类型转换。如果需要,您可以投影到另一种类型(在 Select 子句中),但您仍然需要立即获取 (context.GetTable(Of T)) 以使数据库和模型之间的类型等效。

于 2012-10-03T13:17:42.207 回答