2012-03-10 8 views
0

私の質問は、テーブルのデータを任意の変数に割り当てる方法です。 テキストボックスに入力された電子メールアドレスを使用して忘れたパスワードを取得し、メールアカウント... 私はすでにデータをフェッチしますが、メールの本文にそのパスワードを割り当てる方法がわからないデータベースから値を取得して任意の変数に割り当てる

私のコードはここに

モデル

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.ComponentModel.DataAnnotations; 

namespace TelerikLogin.Models.ViewModels 
{ 
    public class ForgotPassword 
    { 
     public int user_id { get; set; } 
     public string user_login_name { get; set; } 
     public string user_password { get; set; } 

     [Required] 
     [Display(Name="Email Address : ")] 
     public string user_email_address { get; set; } 
    } 
} 
です10

ビュー

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<TelerikLogin.Models.ViewModels.ForgotPassword>" %> 

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server"> 
    ForgotPassword 
</asp:Content> 

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> 

<h2>ForgotPassword</h2> 
<script src="<%: Url.Content("~/Scripts/jquery.validate.min.js") %>" type="text/javascript"></script> 
<script src="<%: Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js") %>" type="text/javascript"></script> 

<% using (Html.BeginForm("ForgotPassword", "Account", FormMethod.Post)) 
    { %> 

    <%: Html.LabelFor(m => m.user_email_address) %> 
    <%: Html.TextBox("user_email_address")%> 
     <%: Html.ValidationSummary(true) %> 

<input type="submit" value="Submit"/> 

コントローラIは、(ユーザーのパスワードをフェッチ)変数PWDを割り当てるnewmsg.body で

public ActionResult ForgotPassword() 
{ 
    return View(); 
} 

[HttpPost] 
public ActionResult ForgotPassword(string user_email_address) 
{ 


    SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=E:\MVC3\TelerikLogin\TelerikLogin\App_Data\Login.mdf;Integrated Security=True;User Instance=True"); 

    DataTable dt1 = new DataTable(); 

    string strQuery = string.Format("SELECT user_password FROM [user_master] WHERE user_email_address='{0}'",user_email_address); 



    conn.Open(); 

    SqlDataAdapter da1 = new SqlDataAdapter(strQuery, conn); 
    da1.Fill(dt1); 

    LoginEntities3 le= new LoginEntities3(); 

    conn.Close(); 

//...... Below is the query where i fetch the password in var pwd 

    var pwd = from u in new LoginEntities3().user_master 
       where u.user_email_address == user_email_address select u.user_password; 




    if (dt1.Rows.Count > 0) 
    { 


     MailAddress mailfrom = new MailAddress("[email protected]"); 
     MailAddress mailto = new MailAddress(user_email_address); 
     MailMessage newmsg = new MailMessage(mailfrom, mailto); 

     newmsg.Subject = "Your Password"; 

**// Here i assign pwd to messege body then it gives an error of type casting so i converted it in To string** 

     newmsg.Body = pwd.ToString(); 



     SmtpClient smtps = new SmtpClient("smtp.gmail.com", 587); 
     smtps.UseDefaultCredentials = false; 
     smtps.Credentials = new NetworkCredential("[email protected]", "password"); 
     smtps.EnableSsl = true; 
     smtps.Send(newmsg); 


     return RedirectToAction("About", "Home"); 
    } 


    return View(); 
} 

それは私に型キャスト程度の誤差を与えます私は文字列()メソッド を使用しているので、msgボディーのパスワードではなくSQLクエリをメールします。 それではどうやってですか?

+0

「pwd」の値は何ですか?デバッグして確認できますか? – Manas

+0

私はselect LINQクエリでsingleordefaultを使う必要があると思っています。http://msdn.microsoft.com/en-us/library/bb359429.aspx –

+0

@Manas oh okey私はそれをデバッグします。そして、これは次のような式だけを表示します ((System.Data.Objects.ObjectQuery)(pwd)) – Dip

答えて

0

(。u.user_email_address == u.user_password選択USER_EMAIL_ADDRESS新しいLoginEntities3中のuから() をuser_master)はPWD =この

文字列.ToString()をお試しください。

関連する問題