[英]asp.net error: Cannot implicitly convert type 'object' to 'string'. An explicit conversion exists (are you missing a cast?)
[英]ASP.NET web development with C#. Cannot implicitly convert type 'object' to 'bool'. An explicit conversion exists (are you missing a cast?)"
我是ASP.NET和C#的新手。 我正在嘗試通過以下步驟創建用戶注冊頁面
1)我向會話發送一個字符串,然后重定向到登錄頁面:
protected void register_Click(object sender, EventArgs e)
{
string fn = fullname.Text;
string em = email.Text;
string pass1 = password.Text;
string pass2 = password2.Text;
if (pass1 == pass2)
{
// con = new SqlConnection("Data Source=localhost\\sqlexpress;Initial Catalog=ewadb;Integrated Security=SSPI");
// data = new SqlDataAdapter("INSERT INTO user_login (fullname, email, password, registered_date) VALUES ('" + fn + "','" + em + "','" + pass1 + "','')", con);
// dset = new DataSet();
// data.Fill(dset);
Session["publicmessage"] = "Success";
Response.Redirect("login.aspx");
}
else {
}
}
2)然后我嘗試從會話中捕獲值到login.aspx
頁面
<% if (Session["publicmessage"] = "Success")
{ %>
<div class="row-fluid">
<div class="span6">
<div class="alert alert-success">
<button type="button" class="close" data-dismiss="alert">×</button>Registation Success. Please Login!</div>
</div>
</div>
<% } else {}%>
我說錯了
無法將類型'object'隱式轉換為'bool'。 存在顯式轉換(您是否缺少演員表?)”。
有人可以幫我解決此錯誤嗎?
在會話中保存任何內容時,它都會另存為對象。 在這里,您需要將其轉換為字符串。 更改此:
<% if (Session["publicmessage"] = "Success")
對此
<% if (Session["publicmessage"].ToString() == "Success")
甚至更好:
<% if (Session["publicmessage"] != null && Session["publicmessage"].ToString() == "Success")
提供的所有答案都是正確的。 但是,當您嘗試讀取會話變量時,出於多種原因,尤其是因為會話可能過期,您應該始終將其評估為空值。 所以不要這樣做...
if (Session["publicmessage"] = "Success")
做這個...
if (Session["publicmessage"] != null && Session["publicmessage"].ToString() == "Success")
或這個...
if (Convert.ToString(Session["publicmessage"]) == "Success")
現在,從設計角度來說...您無需使用會話來存儲身份驗證詳細信息。 您應該始終嘗試避免使用會話。 在這種情況下,您應該改用cookie。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.