繁体   English   中英

将类传递到CSHTML文件时出现字典错误

[英]Dictionary error while passing a class in to a cshtml file

我试图将2个类传递到一个cshtml文件中,并不断出错,但我传递的是“ JavaTutorial.Models.Quiz”类型的模型,但是此字典需要JavaTutorial.Models.Evaluation类型的模型项”。

我不明白,我创建了一个单独的类之后,现在只是尝试传递一个类,但仍然出现错误。

我有一个试图在cshtml中调用的类评估,但是Quiz类不断干扰,但是我不知道为什么。

cshtml:

    @model JavaTutorial.Models.Evaluation

<h2>Details</h2>
<h2>Evaluation</h2>

@using (Html.BeginForm())
{
    @Html.EditorFor(x => x.Questions)
    <input type="submit" />
}

Evaluation.cs

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


namespace JavaTutorial.Models
{
    public class Evaluation
    {
        public List<Question> Questions { set; get; }
        public Evaluation()
        {
            Questions = new List<Question>();
        }
    }

}

测验

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

namespace JavaTutorial.Models
{
    public class Quiz
    {
        [Key]
        public int QuizId { get; set; }
        public string Title { get; set; }
        public int difficulty { get; set; }
        public string description { get; set; }
        public Genre Genre { get; set; }
    }

    public class Question
    {
        public int ID { set; get; }
        public string QuestionText { set; get; }
        public List<Answer> Answers { set; get; }
        [Required]
        public string SelectedAnswer { set; get; }
        public Question()
        {
            Answers = new List<Answer>();
        }
    }
    public class Answer
    {
        public int ID { set; get; }
        public string AnswerText { set; get; }
    }
   /* public class Evaluation
    {
        public List<Question> Questions { set; get; }
        public Evaluation()
        {
            Questions = new List<Question>();
        }
    }*/

    /*public class ParentView
    {
        public Quiz Quiz { get; set; }
        public Question Question { get; set; }
        public Answer Answer { get; set; }
        public Evaluation Evaluation{ get; set; }

    }
    */


    /*
     * using (Html.BeginForm())
{
    @Html.EditorFor(x => x.Evaluation.Questions)
    <input type="submit" />
}*/
}

控制器:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using JavaTutorial.Models;
//using ViewModels;


namespace JavaTutorial.Controllers
{
    public class QuizController : Controller
    {
        //
        // GET: /Quiz/

        TutorialEntities storeDB = new TutorialEntities();



        public ActionResult Details(int id)
        {
            var quiz = storeDB.Quizzes.Find(id);
            return View(quiz);
        }

您已在视图中设置模型:

@model JavaTutorial.Models.Evaluation

但您没有通过此模型:

JavaTutorial.Models.Quiz

View需要模型类评估,但您正在通过测验

如果要通过视图中的测验模型更改,如下所示:

@model JavaTutorial.Models.Quiz

如果要传递两个模型,请在解决方案中的一个名为ViewModels的文件夹中创建一个viewmodel,并将其创建。

public class MyViewModel
{
public List<Question> Questions { set; get; }
public List<Quiz> Quizzes{ set; get; }
public List<Answer> Asnwers { set; get; }
}

ans将视图模型传递到您的视图并按以下方式设置视图:

@model JavaTutorial.ViewModels.MyViewModel

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM