0

我正在为使用Visual Studio 2010的单一模块之一创建一个Web项目。 我正在使用asp.net成员资格,并且正确设置了所有的sql-server表格(我很确定)。似乎无法在表格中插入guid(userID)!

我有一个我已经创建自己的表单,使用sqlDataSource.insert()插入到数据库中。我最初遇到了一些问题,根本无法将任何数据插入表中,但我已经清除了这些问题。

我现在的问题是,我需要将当前登录的用户的用户ID插入到表格的其中一列中。但每次点击提交按钮时,我都被告知无法在userID列中插入空值。

我可以用这个片段检索用户ID:

Dim userID As String 
    Dim memUser As MembershipUser 
    memUser = Membership.GetUser() 
    userID = memUser.ProviderUserKey.ToString() 
    e.Command.Parameters(0).Value = userID 

这是后面的页面代码:

Public Class WebForm1 
Inherits System.Web.UI.Page 

'Dim userID As Guid = CType(memUser.ProviderUserKey, Guid) 



Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
    'Dim UserID As Guid = CType(Membership.GetUser.ProviderUserKey, Guid) 
    'memUser = Membership.GetUser() 
    Dim userID As Guid 


    Dim memUser As MembershipUser 
    memUser = Membership.GetUser() 
    userID = memUser.ProviderUserKey 

    If IsPostBack() Then 
     Session.Add("UserID", userID) 
    Else 
     userID = Session("UserID") 
    End If 

    TextBox1.Text = userID.ToString 


End Sub 
Protected Sub SqlDataSource1_Selecting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.SqlDataSourceSelectingEventArgs) Handles SqlDataSource1.Selecting 
    e.Command.Parameters(0).Value = userID 

End Sub 
Protected Sub buttonInsertCitation_Click(ByVal sender As Object, ByVal e As EventArgs) Handles buttonInsertCitation.Click 


    SqlDataSource1.Insert() 
End Sub 
End Class 

正如你可以看到它是一个有点乱,我我一直在疯狂尝试不同的变体,因为我需要用其他单元模块来追赶一点。

这是我的.aspx页面的SQLDataSource,控件参数对我插入的其他数据工作正常。也许<asp:parameter name="userID" />是错的?

<InsertParameters> 
     <asp:parameter name="userID" /> 
     <asp:ControlParameter ControlID="textNotes" Name="notes" PropertyName="Text" /> 
     <asp:ControlParameter ControlID="textEssayTitle" Name="essayTitle" PropertyName="Text" /> 
     <asp:ControlParameter ControlID="radioIsPrivate" Name="isPrivate" PropertyName="Text" /> 
     <asp:ControlParameter ControlID="dropPaperID" Name="paperID" PropertyName="Text" /> 
</InsertParameters> 

我是比较新的VB和我来自一个HTML & CSS背景。

+0

首先,你的表格结构是什么?接下来使用Profiler查找SQl正在发送的内容。然后,我们可以帮助您了解正在创建的内容出了什么问题。 – HLGEM 2011-02-10 18:10:16

+0

`citationID = int,dateAdded = datetime,notes = ntext,essayTitle = varchar(128),isPrivate = bit,paperID = int,userID = uniqueidentifier`(有没有更好的方法来显示结构,而不是在stackoverflow注释中? – Robin 2011-02-10 19:11:46

回答

0

使用ASP.NET成员资格提供程序,您不必担心执行任何SQL。