2

これが私のクラスです:

public class QuestionClass 

{ 

    public static FeedbackDatabaseDataContext context = new FeedbackDatabaseDataContext(); 

        public class Tabelfields : Question 
        { 
            //public int QuestionID { get; set; } 
            //public string Email { get; set; } 
            //public string QuestionName { get; set; } 
            //public string Option1 { get; set; } 
            //public string Option2 { get; set; } 
            //public string Option3 { get; set; } 
            //public string Option4 { get; set; } 
             public string SelectedOption { get; set; } 
        } 


        public static List<Question> getallQuestion(string email) 
        { 
            var list = (from q in context.Questions where q.Email==@email select     q).ToList(); 

            return list.ToList();  
        } 
}

私の見解 :

@model IEnumerable SQLOperation.Models.QuestionClass.Tabelfields


<p> Question</p> 


     @foreach (var item in Model) 
     { 
         using (Html.BeginForm("Question", "home", new {email=item.Email,item})) 
         {    

             @Html.DisplayFor(modelItem => item.QuestionName) 

             <br /><br />    
             if (item.Option1 != "") 
             { 
                        @Html.RadioButtonFor(modelItem =>item.SelectedOption, item.Option1, item)                 
                        @Html.DisplayFor(modelItem => item.Option1) 
                        <br /><br />                 
             } 

             if (item.Option2 != "") 
             { 
                        @Html.RadioButtonFor(modelItem => item.SelectedOption, item.Option2)               
                        @Html.DisplayFor(modelItem => item.Option2) 
                        <br /><br /> 
             } 

             if (item.Option3 != "") 
             {            
                        @Html.RadioButtonFor(modelItem =>item.SelectedOption, item.Option3)               
                        @Html.DisplayFor(modelItem => item.Option3) 
                        <br /><br /> 
             } 


             if (item.Option4 != "") 
             { 
                        @Html.RadioButtonFor(modelItem =>item.SelectedOption, item.Option4)              
                        @Html.DisplayFor(modelItem => item.Option4)  
                        <br /><br />      
             } 
             i = (Int16)i + 1; 


             if (Model.Count() == i) 
             { 
                    <input name="btnsumbit" type="submit" value="Submit Feedback"  
                    style="font-family:Segoe UI Light;font-size:medium;"/> 
             } 
         } 
     }

これが私のコントローラーです

  public ActionResult Question(string email)

        {              
             return View(QuestionClass.getallQuestion(email)); 
        } 

        [HttpPost, ActionName("Question")] 
        public void Question(string Email,List<QuestionClass.Tabelfields> q) 
        { 
        }

クラス、つまり「Tabelfields」で、新しいプロパティ、つまり SelectedOption を作成します。基本クラス、つまり Question を継承します。Question は SQL サーバー データベースのテーブルです。

これを使用して、強く型のビューを作成します

@model IEnumerable SQLOperation.Models.Question

ビューを強く変更すると、次のように表示されます

 @model IEnumerable SQLOperation.Models.QuestionClass.Tabelfields

このエラーが発生します

「ディクショナリに渡されたモデル アイテムのタイプは 'System.Collections.Generic.List 1[SQLOperation.Models.Question]', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable1[SQLOperation.Models.QuestionClass+Tabelfields]' です。」

このエラーが発生する理由と、これを解決するにはどうすればよいですか?

ありがとうございました、

アジェイ

4

2 に答える 2

0

変更する必要があります:

  @model IEnumerable SQLOperation.Models.QuestionClass.Tabelfields

これに:

  @model List<SQLOperation.Models.Question>

これでエラーが修正されるはずです。

それが役に立てば幸い。

于 2012-08-21T09:11:21.760 に答える
0

モデルの getallQuest をこれに変更します

public static IEnumerable<Question> getallQuestion(string email) 
        { 
            var list = (from q in context.Questions where q.Email==@email select     q).ToList(); 

            return list.AsEnumerable();  //just remove `ToList()` and place `AsEnumerable()`.
        } 

これを試して。これはうまくいくはずです。

于 2012-11-29T12:57:25.047 に答える