ログインしようとすると、私は自分のユーザー名をキャプチャしてマスターページに貼り付けることができません。エラー:タイプ 'System.String'のオブジェクトを 'Member'と入力できませんでした。 'なぜそうですか?私はラベルのマスターページにユーザー名を印刷できるようにしたい。しかし、私は次のように遭遇します。 'System.String'タイプのオブジェクトを 'Member'と入力することができません。 'ログイン後にマスターページにユーザー名のテキストを印刷できません。エラー:タイプのオブジェクトをキャストできません
は、これはこれは私のLoginForm.aspx.cs
protected void btnLogin_Click(object sender, EventArgs e)
{
/* Allows login to be stored to session*/
SqlConnection con = new SqlConnection(conStr);
SqlCommand command = new SqlCommand();
command.Connection = con;
command.CommandText = "select * from Participant where [email protected]_username and [email protected]_password";
command.Parameters.AddWithValue("@participant_username", tbxUserName.Text);
command.Parameters.AddWithValue("@participant_password", tbxPassword.Text);
con.Open();
SqlDataReader rd = command.ExecuteReader();
if (rd.HasRows)
{
rd.Read();
Session["user"] = tbxUserName.Text;
Response.Redirect("default.aspx");
}
else
{
lblOutput.Text = "Invalid username or password.";
}
}
私はメンバーキャストの除去を理解し、自分のコードの原因のしかし、別の部分である私のHomePage.Master.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class HomePage : System.Web.UI.MasterPage
{
protected void Page_Load(object sender, EventArgs e)
{
if (Session["user"] != null)
{
lblUser.Text = ((Member)Session["user"]).Username;
lbtnLogin.Text = "Logout";
}
else
{
lblUser.Text = "";
lbtnLogin.Text = "Login";
}
}
ですエラー:
if (Session["cart"] == null)
{
ShoppingCart s = new ShoppingCart();
s.Member = (Member)Session["user"];
Session["cart"] = s;
}
ShoppingCart sc = (ShoppingCart)Session["cart"];
sc.Seminar = a;
sc.schid = b;
sc.Seminar.Speaker = c;
Response.Redirect("ShoppingCartForm.aspx");
このコードの一部は、ショッピングカートのセッションが空の場合は、メンバーと一緒に新しいショッピングカートを初期化します。 s.Member =(Member)セッション["user"];エラーを投げた。
どうして 'UserName'を' Member'にキャストしているのですか?既に文字列であり、文字列として使用したい場合、 'Member'にキャストするとエラーメッセージが表示されます。だから本当に、なぜ主張するのですか? – oerkelens