Asp.net mvc 为什么可以';我不能在MVC中执行此操作吗?

Asp.net mvc 为什么可以';我不能在MVC中执行此操作吗?,asp.net-mvc,vb.net,asp.net-mvc-3,Asp.net Mvc,Vb.net,Asp.net Mvc 3,这是我的控制器操作: <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.I

这是我的控制器操作:

<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
我得到的错误是:

“Tbl_HRA”上的“Height”属性无法设置为“String” 价值必须将此属性设置为类型为的非空值 “双人”

我似乎不明白为什么会发生这种错误。根据我读到的一些文章,我试着把它改成双倍,但还是不行


感谢您的帮助。

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


我想这会对你有帮助

<ul>
    @For Each g As MvcApplication1.Genre In Model
        @<li>@g.Name</li>
    Next
</ul>
    @对于每个g作为MVCAPApplication1.模型中的类型 @
  • @g.Name
  • 下一个
并查看此url以获取更多帮助


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

从您的注释中可以看出,表中的列是varchar。因此,模型必须将其定义为字符串。尝试将“高度”属性更改为以下内容:

 Public Property Height() As String

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

在哪一行获得异常?它指向我的控制器操作上的
返回视图(hra.ToList)
,但我只有在尝试对视图中的每个循环执行
时才会出现错误。看起来这可能是由该数据库引起的。。。看起来他们将这些设置为
varchar
而不是
double
,这很可笑……这正是我读过的文章之一。我将类型更改为
decimal
,但我不知道如何实现非空。在db表设计器中,它只是一个复选框选项。或者在EF designer中,如果您使用它,它将作为列的属性提供。或者在VB.Net中,我认为将像这个公共属性Height()这样的属性设置为可空(Double)可能会起作用,我也已经尝试过了。它也不能使循环工作。这是VB,不是C。无论如何,谢谢。不,我用的是VB。所以,我需要VB。是的,谢谢你,我知道。而不是使用字符串;但是,我相信我会尝试让他们将数据库列更改为使用double或decimal。
<ul>
    @For Each g As MvcApplication1.Genre In Model
        @<li>@g.Name</li>
    Next
</ul>
 Public Property Height() As String