首页 > 解决方案 > 传入字典的模型项的类型为“ChatFinal.Models.ChatOffline”

问题描述

嗨,请帮我解决这个错误:消息错误
我想在按钮下方执行操作IndexHelpDesk.Cshtml

控制器

namespace ChatFinal.Controllers
{
  public class ChatOfflinesController : Controller 
  {
    public ChatTesteEntities db = new ChatTesteEntities();

    // GET: ChatOfflines
    public ActionResult IndexHelpDesk()
    {
        return View(db.ChatOffline.ToList());
    }

    // GET: ChatOfflines/Details/5
    public ActionResult Details(int? id)
    {
        if (id == null)
        {
            return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
        }
        ChatOffline chatOffline = db.ChatOffline.Find(id);
        if (chatOffline == null)
        {
            return HttpNotFound();
        }
        return View(chatOffline);
    }

    // GET: ChatOfflines/Create
    public ActionResult Create()
    {
        return View();
    }


    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create([Bind(Include = "ID,Usuario,EmailUsuario,MensagemUsuario,HelpDesk,RespostaDesk,EstadoDaMensagem,DataRegistro,DataResposta")] ChatOffline chatOffline)
    {
        if (ModelState.IsValid)
        {
            db.ChatOffline.Add(chatOffline);
            db.SaveChanges();
            return RedirectToAction("Index");
        }

        return View(chatOffline);
    }

    // GET: ChatOfflines/Edit/5
    public ActionResult Edit(int? id)
    {
        if (id == null)
        {
            return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
        }
        ChatOffline chatOffline = db.ChatOffline.Find(id);
        if (chatOffline == null)
        {
            return HttpNotFound();
        }
        return View(chatOffline);
    }


    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Edit([Bind(Include = "ID,Usuario,EmailUsuario,MensagemUsuario,HelpDesk,RespostaDesk,EstadoDaMensagem,DataRegistro,DataResposta")] ChatOffline chatOffline)
    {
        if (ModelState.IsValid)
        {
            db.Entry(chatOffline).State = EntityState.Modified;

            try
            {
                db.SaveChanges();
            }
            catch (DbEntityValidationException ex)
            {
                // Retrieve the error messages as a list of strings.
                var errorMessages = ex.EntityValidationErrors
                .SelectMany(x => x.ValidationErrors)
                .Select(x => x.ErrorMessage);

                // Join the list to a single string.
                var fullErrorMessage = string.Join("; ", errorMessages);

                var exceptionMessage = string.Concat(ex.Message, " The validation errors are: ", fullErrorMessage);

                                    throw new DbEntityValidationException(exceptionMessage, ex.EntityValidationErrors);
            }
            return RedirectToAction("IndexHelpDesk");
        }
        return View(chatOffline);
    }

    // GET: ChatOfflines/Delete/5
    public ActionResult Delete(int? id)
    {
        if (id == null)
        {
            return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
        }
        ChatOffline chatOffline = db.ChatOffline.Find(id);
        if (chatOffline == null)
        {
            return HttpNotFound();
        }
        return View(chatOffline);
    }

    [HttpPost, ActionName("Delete")]
    [ValidateAntiForgeryToken]

    protected override void Dispose(bool disposing)
    {
        if (disposing)
        {
            db.Dispose();
        }
        base.Dispose(disposing);
    }

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

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

IndexHelpDesk.Cshtml

@model IEnumerable<ChatFinal.Models.ChatOffline>

@{
    ViewBag.Title = "Index";
    Layout = "~/Views/Shared/_Layout.cshtml";

}


<h2>Index</h2>



<div class="box container">
    <div class="box-header">
        <h3 class="box-title">Lista de Mensagens</h3>
    </div>
    <!-- /.card-header -->
    <div class="card-body table-responsive no-padding">


        <table id="example1" class="table table-bordered table-striped table-hover">

             <thead>
                <tr>
                    <th>
                        @Html.DisplayNameFor(model => model.Usuario)
                    </th>
                    <th>
                        Email do Usuario
                    </th>
                    <th>
                        Mensagem do Usuario
                    </th>
                    <th>
                        Data da Mensagem
                    </th>

                    <th>
                        @Html.DisplayNameFor(model => model.HelpDesk)
                    </th>
                    <th>
                        @Html.DisplayNameFor(model => model.RespostaDesk)
                    </th>
                    <th>
                        @Html.DisplayNameFor(model => model.DataResposta)
                    </th>
                    <th>
                        @Html.DisplayNameFor(model => model.EstadoDaMensagem)
                    </th>


                    <th>Operações</th>
                </tr>
            </thead>
            <tbody>

                @foreach (var item in Model)
                {
                    <tr>
                        <td>
                            @Html.DisplayFor(modelItem => item.Usuario)
                        </td>
                        <td>
                            @Html.DisplayFor(modelItem => item.EmailUsuario)
                        </td>
                        <td style="max-width: 100px; overflow: hidden; white-space: nowrap;  text-overflow: ellipsis;">
                            @Html.DisplayFor(modelItem => item.MensagemUsuario)
                        </td>
                        <td>
                            @Html.DisplayFor(modelItem => item.DataRegistro)
                        </td>
                        <td>
                            @Html.DisplayFor(modelItem => item.HelpDesk)
                        </td>
                        <td>
                            @Html.DisplayFor(modelItem => item.RespostaDesk)
                        </td>
                        <td>
                            @Html.DisplayFor(modelItem => item.DataResposta)
                        </td>
                        <td>

                            @if (item.EstadoDaMensagem.Equals("Nao Respondido"))
                            {

                                <span class="label label-warning"><i class="fa fa-close" style="color:red"></i>@Html.DisplayFor(modelItem => item.EstadoDaMensagem)</span>
                            }
                            else if (item.EstadoDaMensagem.Equals("Respondido"))
                            {
                                <span class="label label-success">@Html.DisplayFor(modelItem => item.EstadoDaMensagem) <i class="fa fa-check" style="color:lightgreen"></i></span>
                            }
                        </td>


                        <td>
                            @if (item.EstadoDaMensagem.Equals("Respondido"))
                            {
                                <center><button class="btn btn-dark ">@Html.ActionLink("Detalhes", "Details", new { id = item.ID })</button></center>
                            }
                            else if (item.EstadoDaMensagem.Equals("Nao Respondido"))
                            {
                                <button class="btn btn-secondary btn-sm">@Html.ActionLink("Responder", "Edit", new { id = item.ID })</button>
                                <button class="btn btn-dark btn-sm ">@Html.ActionLink(" | Detalhes", "Details", new { @style = "margin: 0 auto;", id = item.ID })</button>
                            }



                        </td>
                    </tr>
                }

            </tbody>

        </table>

    </div>
    <!-- /.card-body -->
</div>
<!-- /.card -->

_Layout.Cshtml

@model IEnumerable<ChatFinal.Models.ChatOffline>
@using System.Data.SqlClient;
@using ChatFinal.Models;




<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>HelpDesk Painel</title>
    <!-- Tell the browser to be responsive to screen width -->
    <meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
    <link rel="stylesheet" href="../../plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.min.css">
    <link href="~/Content/font-awesome.min.css" rel="stylesheet" />

    <script src="~/admin-lte/js/adminlte.min.js"></script>

    @Styles.Render("~/Content/css")
    @Scripts.Render("~/bundles/modernizr")

    <!-- Google Font -->
    <link rel="stylesheet"
          href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,300italic,400italic,600italic">
</head>


<body class="hold-transition skin-blue sidebar-mini" style="padding-top:unset; padding-bottom:unset">
    <div class="wrapper">
        <!-- Main Header -->
        <header class="main-header">
            <!-- Logo -->
            <a href="index2.html" class="logo">
                <!-- mini logo for sidebar mini 50x50 pixels -->
                <span class="logo-mini"><b>C</b>A</span>
                <!-- logo for regular state and mobile devices -->
                <span class="logo-lg"><b>Chat</b>Admin</span>
            </a>
            <!-- Header Navbar -->
            <nav class="navbar navbar-static-top" role="navigation">
                <!-- Sidebar toggle button-->
                <a href="#" class="sidebar-toggle" data-toggle="push-menu" role="button">
                    <span class="sr-only">Toggle navigation</span>
                </a>
                <!-- Navbar Right Menu -->
                <div class="navbar-custom-menu">
                    <ul class="nav navbar-nav">
                        <!-- Messages: style can be found in dropdown.less-->
                        <li class="dropdown messages-menu">
                            <!-- Menu toggle button -->
                            <a href="#" class="dropdown-toggle" data-toggle="dropdown">
                                <i class="fa fa-envelope-o"></i>
                                <span class="label label-success" id="tr">count</span>
                            </a>
                            <ul class="dropdown-menu">

                                <li>
                                    <!-- inner menu: contains the messages -->
                                    <ul class="menu">



                                        @foreach (var item in Model)
                                        {
                                            if (item.EstadoDaMensagem.Equals("Nao Respondido"))
                                            {
                            <li>
                                <!-- start message -->
                                <a href="#">
                                    <div class="pull-left">
                                        <!-- User Image -->
                                        <img src="~/admin-lte/img/avatar.png" />
                                    </div>
                                    <!-- Message title and timestamp -->

                                    <h4>
                                        @Html.DisplayFor(modelItem => item.Usuario) 
                                        <small><i class="fa fa-clock-o"></i> @Html.DisplayFor(modelItem => item.DataRegistro)</small>
                                    </h4>
                                    <!-- The message -->
                                    <p>@Html.DisplayFor(modelItem => item.MensagemUsuario)</p>
                                </a>
                            </li>
                                                }
                                                else if  (item.EstadoDaMensagem.Equals("Respondido")){

                                                <span>Nao exitem Mensagens Disponiveis</span>

                                            }

                                        }


                                    </ul>
                                    <!-- /.menu -->
                                </li>
                                <li class="footer"><a href="#">See All Messages</a></li>
                            </ul>
                        </li>
        @if (IsSectionDefined("SideBar"))
        {
            @RenderSection("SideBar")
        }
        <!-- Left side column. contains the logo and sidebar -->
        <aside class="main-sidebar">
            <!-- sidebar: style can be found in sidebar.less -->
            <section class="sidebar">
                <!-- Sidebar user panel (optional) -->
                <div class="user-panel">
                    <div class="pull-left image">
                        <img src="~/admin-lte/img/avatar5.png" class="user-image" alt="User Image">
                    </div>
                    <div class="pull-left info">
                        <p>Horaciio</p>
                        <!-- Status -->
                        <a href="#"><i class="fa fa-circle text-success"></i> Online</a>
                    </div>
                </div>
                <!-- search form (Optional) -->
                <!-- /.search form -->
                <!-- Sidebar Menu -->
                <ul class="sidebar-menu" data-widget="tree">
                    <li class="header">HEADER</li>
                    <!-- Optionally, you can add icons to the links -->
                    <li> <a href="@Url.Action("Index", "Home")"><i class="fa fa-home"></i><span>Inicio</span></a></li>
                    <li> <a href="@Url.Action("About", "Home")"><i class="fa fa-user"></i><span>Sobre</span></a></li>  <!--ou <li>Aroba Html.ActionLink("Sobre", "About", "Home")</li> -->
                    <li> <a href="@Url.Action("Contact", "Home")"><i class="fa fa-phone"></i><span>Contactos</span></a></li>




                    <li><a href="#"><i class="fa fa-link"></i> <span>Another Link</span></a></li>

                    <li class="treeview">
                        <a href="#">

                            <i class="fa fa-link"></i> <span>Multilevel</span>
                            <span class="pull-right-container">
                                <i class="fa fa-angle-left pull-right"></i>
                            </span>
                        </a>
                        <ul class="treeview-menu">
                            <li><a href="#">Link in level 2</a></li>
                            <li><a href="#">Link in level 2</a></li>
                        </ul>
                    </li>
                </ul>
                <!-- /.sidebar-menu -->
            </section>
            <!-- /.sidebar -->
        </aside>
        <!-- Content Wrapper. Contains page content -->
        <div class="content-wrapper">
            <!-- Content Header (Page header) -->
            <section class="content-header">
                <h1>
                    Gestão de Mensagens
                    <small>V 1.0</small>
                </h1>
                <ol class="breadcrumb">
                    <li><a href="#"><i class="fa fa-dashboard"></i> Level</a></li>
                    <li class="active">Here</li>
                </ol>
            </section>
            <!-- Main content -->
            <section class="content container-fluid">
                <!--------------------------
                  | Your Page Content Here |
                  -------------------------->
                @RenderBody()
                <!-- RenderBody works as a placeholder for the engine to know where to drop the content of the view using the layout page. -->
                <!-- RenderBody eh um placeholder pra o motor saber onde deixar  o conteudo que usa a vieew de layout -->
            </section>
            <!-- /.content -->
        </div>
        <!-- /.content-wrapper -->
        <!-- Main Footer -->
        <footer class="main-footer">
            <!-- To the right -->
            <div class="pull-right hidden-xs">
                Anything you want
            </div>
            <!-- Default to the left -->
        </footer>
        <!-- Control Sidebar -->
        <aside class="control-sidebar control-sidebar-dark">
            <!-- Create the tabs -->
            <ul class="nav nav-tabs nav-justified control-sidebar-tabs">
                <li class="active"><a href="#control-sidebar-home-tab" data-toggle="tab"><i class="fa fa-home"></i></a></li>
                <li><a href="#control-sidebar-settings-tab" data-toggle="tab"><i class="fa fa-gears"></i></a></li>
            </ul>
            <!-- Tab panes -->
            <div class="tab-content">
                <!-- Home tab content -->
                <div class="tab-pane active" id="control-sidebar-home-tab">
                    <h3 class="control-sidebar-heading">Recent Activity</h3>
                    <ul class="control-sidebar-menu">
                        <li>
                            <a href="javascript:;">
                                <i class="menu-icon fa fa-birthday-cake bg-red"></i>
                                <div class="menu-info">
                                    <h4 class="control-sidebar-subheading">Langdon's Birthday</h4>
                                    <p>Will be 23 on April 24th</p>
                                </div>
                            </a>
                        </li>
                    </ul>
                    <!-- /.control-sidebar-menu -->
                    <h3 class="control-sidebar-heading">Tasks Progress</h3>
                    <ul class="control-sidebar-menu">
                        <li>
                            <a href="javascript:;">
                                <h4 class="control-sidebar-subheading">
                                    Custom Template Design
                                    <span class="pull-right-container">
                                        <span class="label label-danger pull-right">70%</span>
                                    </span>
                                </h4>
                                <div class="progress progress-xxs">
                                    <div class="progress-bar progress-bar-danger" style="width: 70%"></div>
                                </div>

                <!-- /.tab-pane -->
            </div>
        </aside>
        <!-- /.control-sidebar -->
        <!-- Add the sidebar's background. This div must be placed
        immediately after the control sidebar -->
        <div class="control-sidebar-bg"></div>
    </div>
    @Scripts.Render("~/bundles/jquery")
    @Scripts.Render("~/bundles/bootstrap")
    @Scripts.Render("~/admin-lte/js")
    @RenderSection("scripts", required: false)
    <script src="../../plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.all.min.js"></script>
    <script src="~/admin-lte/js/adminlte.min.js"></script>
    <script src="~/admin-lte/js/adminlte.js"></script>

    <script src="~/bower_components/datatables.net/js/jquery.dataTables.min.js"></script>
    <script src="~/bower_components/datatables.net-bs/js/dataTables.bootstrap.min.js"></script>

    <script>
             //bootstrap WYSIHTML5 - text editor
        $(".textarea").wysihtml5();
        $('#example1_col-sm-6_example1_filter').dataTable()

    </script>


    <script>
  $(function () {
    $('#example1').DataTable({
      'paging'      : true,
      'lengthChange': true,
      'searching'   : true,
      'ordering'    : true,
      'info'        : true,
      'autoWidth': false,
      'Sort': true,
      "aaSorting": [[3, "desc"]]
        // esse aaSorting, organiza a tabela no row 3 (data) pq eh array, e de maneira desc
    })
  })

  function contaLinhasTabela() {
      var tabela = document.getElementById('example1');
      var linhas = tabela.getElementsByTagName('tr');
      alert('A tabela example1 possui ' + linhas.length + ' linhas');
  }
    </script>
</body>



</html>

标签: javascripthtmlasp.net

解决方案


检查@modeledit.cshtml 和 details.cshtml 中的行。它们应该只是@model ChatFinal.Models.ChatOffline代替,@model IEnumerable<ChatFinal.Models.ChatOffline>因为这些页面处理的是单个对象而不是列表。


推荐阅读