2016-05-12 4 views
0

データを収集するasp.netテーブルがあります。収集される2つの値は、データテーブルから作成されたドロップダウンリストコントロールを介して行われます。ドロップダウンリストが正しく動作しているように見えますが、保存プロセスで「 'string'から 'int'に変換できません」というエラーが表示されます。数値の値はすべてint型で、文字列がどこにあるかわかりませんここで紹介しテーブルからテキストボックスにデータを取り込みますが、文字列をintに変換するエラー

2つのインスタンスの1の背後にあるコードです:テーブルを構築する

クラス:DropDownListコントロールのための

using System.Collections.Generic; 
using System.ComponentModel.DataAnnotations; 
namespace cs1.Models 
    { 
    public class ItemBank 
    { 
     [ScaffoldColumn(false)] 
     [Key] 
     public int BankID { get; set; } 

     [Required, StringLength(100), Display(Name = "Item Bank")] 
     public string BankName { get; set; } 
    } 
} 

はコード:

<tr> 
     <td><asp:Label ID="LabelItemBank" runat="server">Item  Bank:</asp:Label></td> 
     <td><asp:DropDownList ID="DDItemBank" runat="server" ItemType="cs1.Models.ItemBank" 
       SelectMethod="GetItemBank" AppendDataBoundItems="true" 
       DataTextField="BankName" DataValueField="BankID" > 
      </asp:DropDownList> 
     </td> 
    </tr> 
質問クラスの

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using cs1.Models; 

namespace cs1.Logic 

{ 
public class AddQuestion 
{ 
    public bool Add_Question(string Author, string ImageFile, String SubmitDate, string Stem, string RespA, string RespB, string RespC, string RespD, string RespE, 
     string Answer, string Critique, string KeyObjective, string References, string Time, int Bank, int CatCode) 
    { 
     var myquestion = new Questions(); 
     myquestion.Author = Author; 
     myquestion.ImageFile = ImageFile; 
     myquestion.SubmitDate = SubmitDate; 
     myquestion.Stem = Stem; 
     myquestion.RespA = RespA; 
     myquestion.RespB = RespB; 
     myquestion.RespC = RespC; 
     myquestion.RespD = RespD; 
     myquestion.RespE = RespE; 
     myquestion.Answer = Answer; 
     myquestion.Critique = Critique; 
     myquestion.KeyObjective = KeyObjective; 
     myquestion.References = References; 
     myquestion.Time = Time; 
     myquestion.Bank = Bank; 
     myquestion.CatCode = CatCode; 


     using (ProductContext _db = new ProductContext()) 
     { 
      // Add Product to DB. 
      _db.Questions.Add(myquestion); 
      _db.SaveChanges(); 
     } 
     // Success. 
     return true; 
     } 

    } 
} 

コード:

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

namespace cs1.Models 
{ 
public class Questions 
{ 
    [ScaffoldColumn(false)] 
    [Key] 
    public int QuestionID { get; set; } 

    [Required, StringLength(100), Display(Name = "Author Name")] 
    public string Author { get; set; }// change to authorID? 

    [Required, StringLength(100), Display(Name = "Image File Name")] 
    public string ImageFile { get; set; } 

    [Required, StringLength(20), Display(Name = "Date Created")] 
    public string SubmitDate { get; set; } 

    [Required, StringLength(10000), Display(Name = "Stem"), DataType(DataType.MultilineText)] 
    public string Stem { get; set; } 

    [Required, StringLength(500), Display(Name = "Response A")] 
    public string RespA { get; set; } 

    [Required, StringLength(500), Display(Name = "Response B")] 
    public string RespB { get; set; } 

    [Required, StringLength(500), Display(Name = "Response C")] 
    public string RespC { get; set; } 

    [Required, StringLength(500), Display(Name = "Response D")] 
    public string RespD { get; set; } 

    [Required, StringLength(500), Display(Name = "Response E")] 
    public string RespE { get; set; } 

    [Required, StringLength(1), Display(Name = "Correct Answer")] 
    public string Answer { get; set; } 

    [Required, StringLength(10000), Display(Name = "critique"), DataType(DataType.MultilineText)] 
    public string Critique { get; set; } 

    [Required, StringLength(500), Display(Name = "Key Learning Objective")] 
    public string KeyObjective { get; set; } 

    [Required, StringLength(10000), Display(Name = "References"), DataType(DataType.MultilineText)] 
    public string References { get; set; } 

    [Required, StringLength(5), Display(Name = "TimeAllowed")] 
    public string Time { get; set; } 

    [Required, Display(Name = "Item Bank")] 
    public int Bank { get; set; } 

    [Required, Display(Name = "Category Code(s)")] 
    public int CatCode { get; set; } 
} 
} 

コードの後ろのところエラー提出フォーム上のレコードの保存のための

public IQueryable GetItemBank() 
{ 
     var _db = new cs1.Models.ProductContext(); 
     IQueryable query = _db.ItemBank; 
     return query; 
    } 

コード:DropDownListコントロールの背後にあるクエリの

コード

using cs1.Logic; 
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Web.Security; 

namespace cs1.Submit 

{ 
public partial class Submit_Form : System.Web.UI.Page 
{ 

    protected void Page_Load(object sender, EventArgs e) 
    { 

     string productAction = Request.QueryString["ProductAction"]; 
     if (productAction == "add") 
     { 
      LabelStatus.Text = "Question Accepted!"; 
     } 

    } 
    public IQueryable GetCatCodes() 
    { 
     var _db = new cs1.Models.ProductContext(); 
     IQueryable query = _db.CatCode; 
     return query; 
    } 
    public IQueryable GetItemBank() 
    { 
     var _db = new cs1.Models.ProductContext(); 
     IQueryable query = _db.ItemBank; 
     return query; 
    } 

    protected void btnSubmit_Click(object sender, EventArgs e) 
    { 
     string dt = Request.Form[txtDate.UniqueID]; 
    } 

    protected void ButtonUpload_Click(object sender, EventArgs e) 
{ 
    Boolean fileOK = false; 
    String path = Server.MapPath("~/Submit/Images/"); 
    if (ImageFile.HasFile) 
    { 
    String fileExtension = System.IO.Path.GetExtension(ImageFile.FileName).ToLower(); 
    String[] allowedExtensions = { ".gif", ".png", ".jpeg", ".jpg", ".zip"}; 
    for (int i = 0; i < allowedExtensions.Length; i++) 
    { 
     if (fileExtension == allowedExtensions[i]) 
     { 
     fileOK = true; 
     } 
    } 
    } 

    if (fileOK) 
    { 
    try 
    { 
     // Save to Images folder. 
     ImageFile.PostedFile.SaveAs(path + ImageFile.FileName); 
     // Save to Images/Thumbs folder. 
     ImageFile.PostedFile.SaveAs(path + "Thumbs/" + ImageFile.FileName); 
    } 
    catch (Exception ex) 
    { 
     LabelStatus.Text = ex.Message; 
    } 

    // Add question data to DB. 
    AddQuestion questions = new AddQuestion(); 
    bool addSuccess = questions.Add_Question(AuthorName.Text, 
     ImageFile.FileName, 
     txtDate.Text, 
     Stem.Text, 
     ResponseA.Text, 
     ResponseB.Text, 
     ResponseC.Text, 
     ResponseD.Text, 
     ResponseE.Text, 
     DDResponse.SelectedValue, 
     Critique.Text, 
     KeyLO.Text, 
     Reference.Text, 
     DDTime.SelectedValue, 
     DDItemBank.SelectedValue, 
     DDCategory.SelectedValue); 
    if (addSuccess) 
    { 
     // Reload the page. 
     string pageUrl = Request.Url.AbsoluteUri.Substring(0, Request.Url.AbsoluteUri.Count() - Request.Url.Query.Count()); 
     Response.Redirect(pageUrl + "?ProductAction=add"); 
     LabelStatus.Text = "Question addes Successfully"; 
    } 
    else 
    { 
     LabelStatus.Text = "Unable to add question to database. Review comments next to fields"; 
    } 
    } 
    else 
    { 
    LabelStatus.Text = "Unable to accept file type."; 
    } 
} 

    public MembershipUser currentuser { get; set; } 
} 
} 
+1

あなたは、あなたの質問のクラスを示す必要があります。 'Add_Question'のすべてのパラメータは文字列であり、' int'でなければならない少なくとも1つがあることは確かです。どこでエラーが出ますか? –

+0

質問クラスのコードが追加されました。エラーは、今追加した2番目の項目のDDItemBank.SelectedValue行に生成されています –

+0

'Questions'クラスを表示していません –

答えて

0

メソッドAdd_Questionに文字列だけを渡しますが、プロパティのうちの2つはintです。文字列を返すListControl.SelectedValue方法

bool addSuccess = questions.Add_Question(AuthorName.Text, 
     ImageFile.FileName, 
     txtDate.Text, 
     Stem.Text, 
     ResponseA.Text, 
     ResponseB.Text, 
     ResponseC.Text, 
     ResponseD.Text, 
     ResponseE.Text, 
     DDResponse.SelectedValue, 
     Critique.Text, 
     KeyLO.Text, 
     Reference.Text, 
     DDTime.SelectedValue, 
     DDItemBank.SelectedValue, 
     DDCategory.SelectedValue); 

問題のパラメータが最後の二つ、DDItemBank.SelectedValue及びDDCategory.SelectedValueあります。

int bank = int.Parse(DDItemBank.SelectedValue); 
int catCode = int.Parse(DDCategory.SelectedValue); 

その後Add_Questionにこれらのパラメータを渡す:あなたはintにそれらを変換する必要があります。

0

はティムSchmelterが掲示するものと非常によく似た、働く解決策を見つけた(感謝ティム!):

// Add question data to DB. 
AddQuestion questions = new AddQuestion(); 
bool addSuccess = questions.Add_Question(AuthorName.Text, 
    ImageFile.FileName, 
    txtDate.Text, 
    Stem.Text, 
    ResponseA.Text, 
    ResponseB.Text, 
    ResponseC.Text, 
    ResponseD.Text, 
    ResponseE.Text, 
    DDResponse.SelectedValue, 
    Critique.Text, 
    KeyLO.Text, 
    Reference.Text, 
    DDTime.SelectedValue, 
    Convert.ToInt32(DDItemBank.SelectedValue), 
    Convert.ToInt32(DDCategory.SelectedValue)); 
if (addSuccess) 
関連する問題