2010-06-28 42 views
1

我有一个控制器的ActionResult,看起来像这样数据库从控制器传递对象时,到资源库

Function Edit(ByVal user As Domain.User, ByVal id As Integer) As ActionResult 
    Dim _user As Domain.User = user 
    If ModelState.IsValid Then 

     If Not String.IsNullOrEmpty(user.UserName) AndAlso _ 
      Not String.IsNullOrEmpty(user.WebSite) AndAlso _ 
      Not String.IsNullOrEmpty(user.Email) AndAlso _ 
      Not String.IsNullOrEmpty(user.About) AndAlso _ 
      Not user.Region Is Nothing AndAlso _ 
      Not user.BirthDate Is Nothing AndAlso _ 
      Not user.isProfileComplete = True Then 

      _user.isProfileComplete = True 
      _user.Reputation = user.Reputation + 10 

      UserService.UpdateUser(_user) 

     Else 
      UserService.UpdateUser(_user) 
     End If 

     UserService.SubmitChanges() 
     Session("UserInfo") = Nothing 

     Return RedirectToAction("Details", "Users", New With {.id = id, .slug = user.UserName}) 
    Else 
     Return View(user) 
    End If 
End Function 

它去服务进行验证后,更新不正确的值,它被传递到看起来像库这

Public Sub UpdateUser(ByVal user As User) Implements IUserRepository.UpdateUser 
     Dim _user = (From u In dc.Users 
      Where u.ID = user.ID 
      Select u).Single 

     With _user 
      .About = user.About 
      .BirthDate = user.BirthDate 
      .Email = user.Email 
      .isClosed = user.isClosed 
      .isProfileComplete = user.isProfileComplete 
      .RegionID = user.RegionID 
      .Reputation = user.Reputation 
      .UserName = user.UserName 
      .WebSite = user.WebSite 
     End With 

    End Sub 

我遇到的问题是与三个字段。

isProfileComplete,isClosed & Reputation都变得“更新”为“NULL”。

我甚至试图在视图中创建隐藏的字段来包含数据,但我没有做任何事似乎正确地通过这三个字段。所有其他字段更新没有问题。

有谁能告诉我我错过了什么吗?

回答

0

忘记这一个......我想通了。

我错过了把以下字段到窗体(我让他们在底部,从形态)

<%: Html.HiddenFor(Function(model) model.isProfileComplete)%> 
<%: Html.HiddenFor(Function(model) model.isClosed)%> 
<%: Html.HiddenFor(Function(model) model.Reputation)%> 
相关问题