Передача нескольких наборов данных для просмотра [MVC] - PullRequest
0 голосов
/ 29 июня 2018

Я новичок в MVC, я ссылался на эту ссылку (https://www.aspsnippets.com/Articles/Pass-Send-DataSet-DataTable-from-Controller-to-View-in-ASPNet-MVC.aspx) и передавал данные из контроллера, но мой проект содержит несколько таблиц, и мне нужно передать данные из Model-> Controller-> View. Я сталкиваюсь с ошибкой при этом. Пожалуйста, проверьте и предоставьте решение для моей проблемы.

Ошибка при запуске приложения

Server Error in '/' Application.
The model item passed into the dictionary is of type 'MyClassModel.Models.MyClass', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable`1[MyClassModel.Models.MyClass]'.

<- Модель -> (Представление данных)

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

namespace MyClassModel.Models
{
    public class Myclass
    {
        public List<int> Colors_ID { get; set; }
        public List<string> ColorsInfo { get; set; }
        public List<int> Completexity_code { get; set; }
        public List<string> Completexity_name { get; set; }
        public List<int> DeptCompletexity_code { get; set; }
        public List<string> DeptCompletexity_name { get; set; }

    }
}

<- Модель -> (Бизнес-логика)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;

namespace MyClassModel.Models
{
    public class MyClassBL
    {

        string conn = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
        public DataSet details()
        {
            DataSet ds = new DataSet();
            using (SqlConnection con = new SqlConnection(conn))
            {
                SqlCommand cmd = new SqlCommand("ItrackDropdown", con);
                con.Open();
                SqlDataAdapter da = new SqlDataAdapter(cmd);
                da.Fill(ds);
            }
            return ds;

        }
    }
}

<- Controller ->

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MyClassModel.Models;
using System.Data;


namespace MyClassModel.Controllers
{
    public class Home : Controller
    {
        //
        // GET: /Home/

        public ActionResult Index()
        {


        MyClass newobj=new MyClass();
        MyClassBL obj = new MyClassBL();
        newobj.Colors_ID= obj.details().Tables[0].AsEnumerable().Select(x => x.Field<int>("Colors_ID")).ToList();
        newobj.ColorsInfo = obj.details().Tables[0].AsEnumerable().Select(x => x.Field<string>("ColorsInfo")).ToList();
        newobj.Completexity_code = obj.details().Tables[1].AsEnumerable().Select(x => x.Field<int>("Complexity_code")).ToList();
        newobj.Completexity_name = obj.details().Tables[1].AsEnumerable().Select(x => x.Field<string>("Complexity_name")).ToList();
        newobj.DeptCompletexity_code = obj.details().Tables[2].AsEnumerable().Select(x => x.Field<int>("Complexity_code")).ToList();
        newobj.DeptCompletexity_name = obj.details().Tables[2].AsEnumerable().Select(x => x.Field<string>("Complexity_name")).ToList();
        return View(newobj);
        }

    }
}

<- Вид ->

@model IEnumerable<MyClass.Models.MyClass>

@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <title>Index</title>
</head>
<body>
    <p>
        @Html.ActionLink("Create New", "Create")
    </p>
    <table>
    @foreach (var item1 in @Model.Select(x => x.Colors_ID))
            { 
        <tr>
            <td>
            @item1
            </td>

        </tr>
    }
    @foreach (var item in Model)
    {
        <tr>
            <td>
                @Html.ActionLink("Edit", "Edit", new { /* id=item.PrimaryKey */ }) |
                @Html.ActionLink("Details", "Details", new { /* id=item.PrimaryKey */ }) |
                @Html.ActionLink("Delete", "Delete", new { /* id=item.PrimaryKey */ })
            </td>
        </tr>
    }

    </table>
</body>
</html>

1 Ответ

0 голосов
/ 29 июня 2018

Два предложения для ваших ссылок: 1) Модель

а) Название модели,

В соответствии с контроллером , название модели первой модели необходимо обновить следующим образом:

public class ItrackDD

должно быть

public class MyClass 

б) Модель должна соответствовать базе данных. это повлияет на то, как исправить ошибку в соответствии с # 2.

Все члены модели ItrackDD список , вы уверены?

2) Сообщение об ошибке должно поступить от: В контроллере он возвращает newobj типа Myclass, как показано в следующей строке кода, которая будет передана в представление

return View(newobj);

но в представлении ожидается словарь, как в этой строке:

@model IEnumerable<MyClass.Models.MyClass>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...