代码之家  ›  专栏  ›  技术社区  ›  Chase Florell

“system.web.mvc.mvchtmlstring”类型的MVC错误(razor)值无法转换为“integer”

  •  0
  • Chase Florell  · 技术社区  · 14 年前

    我得到以下错误

    “system.web.mvc.mvchtmlstring”类型的值无法转换为“integer”。

    @html.actionlink(“编辑”,“编辑”,“用户”,用.id=model.id新建,无)

    下面是代码

        @If (Model.isUserMatch) Then
        @<div>
            @Html.ActionLink("edit", "Edit", "Users", New With {.id = Model.ID})
            | <a href="#" onclick="jQuery('#OpenID').dialog('open'); return false">manage openids</a></div>
        End If
    

    有人知道为什么会这样吗?

    编辑:

    有人问我ViewModel是什么样子的

    Imports System.Linq
    Imports UrbanNow.Core.Extensions
    Namespace Domain
        Public Class UserViewModel
            Public Property UserName As String
            Public Property Email As String
            Public Property Website As String
            Public Property ID As Integer
            Public Property OpenIds As List(Of OpenID)
            Public Property UserAge As String
            Public Property About As String
            Public Property Slug As String
            Public Property LastSeen As String
            Public Property Region As String
            Public Property MemberSince As String
            Public Property Reputation As String
            Public Property isUserMatch As Boolean = False
            Private MarkDownSharp As MarkdownSharp.Markdown
    
            Public Sub New(ByVal user As User)
                Dim currentuser As Authentication.AuthUserData = Authentication.CustomAuthentication.RetrieveAuthUser
                MarkDownSharp = New MarkdownSharp.Markdown
                With MarkDownSharp
                    .AutoHyperlink = False
                    .AutoNewLines = True
                    .EncodeProblemUrlCharacters = True
                    .LinkEmails = True
                    .StrictBoldItalic = True
                End With
    
                ''# We want to ensure that the user has a username, even if they
                ''# haven't set one yet. What this does is check to see if the
                ''# user.UserName field is blank, and if it is, it will set the
                ''# username to "UserNNNN" where NNNN is the user ID number.
                _UserName = If(Not user.UserName Is Nothing, user.UserName, "User" & user.ID.ToString)
    
                ''# Nothing fancy going on here, we're just re-passing the object from
                ''# the database to the View. No data manipulation!
                _Email = user.Email
                _Website = user.WebSite
                _ID = user.ID
                _MemberSince = user.MemberSince
    
                ''# Get's a list of all of the user's OpenID's
                _OpenIds = user.OpenIDs.ToList
    
                ''# Converts the users birthdate to an age representation
                _UserAge = user.BirthDate.ToAge ''# IE: 29
    
                ''# Because some people can be real ass holes and try to submit bad
                ''# data (scripts and shitè) we have to modify the "About" content in
                ''# order to sanitize it.  At the same time, we transform the Markdown
                ''# into valid HTML. The raw input is stored without sanitization in
                ''# the database.  this could mean Javascript injection, etc, so the
                ''# output ALWAYS needs to be sanitized.
                _About = Trim(Utilities.HtmlSanitizer.Sanitize(MarkDownSharp.Transform(user.About)))
    
                ''# Removes spaces from Usernames in order to properly display the
                ''# username in the address bar
                _Slug = Replace(user.UserName, " ", "-")
    
                ''# Returns a boolean result if the current logged in user matches the
                ''# details view of the user in question.  This is done so that we can
                ''# show the edit button to logged in users.
                _isUserMatch = If(currentuser.ID = user.ID, True, False)
    
                ''# Grabs the users last activity and formats it to a <time> tag
                ''# for use with the timeago jQuery plugin
                _LastSeen = user.ActivityLogs.Reverse.FirstOrDefault.ActivityDate
    
                ''# Formats the users reputation to a comma Deliminated number 
                ''#    IE: 19,000 or 123k
                _Reputation = user.Reputation.ToShortHandNumber
    
    
                ''# Get the name of the users current Region.
                _Region = user.Region.Region.FirstOrDefault
            End Sub
    
        End Class
    End Namespace
    
    1 回复  |  直到 14 年前
        1
  •  0
  •   Chase Florell    14 年前

    啊,我的“继承人”错了。

    我有

    @Inherits System.Web.Mvc.ViewPage(Of MyApp.Core.Domain.User)
    

    我应该什么时候用

    @ModelType MyApp.Core.Domain.User