繁体   English   中英

ASP.NET MVC - DropDownListFor 中的访问问题

[英]ASP.NET MVC - Access Issue in DropDownListFor

我正在制作一个页面。 页面上有一个表格。 我的目标是过滤表系统。 我将使用Class.ClassName进行过滤。

我的代码:

Index.cshtml

@model List<StudentApp.Models.Entity.StudentTable>
@{
    ViewData["Title"] = "Manage Student";
    Layout = "~/Views/Shared/_Layout.cshtml";
}
<br />
<h1>Manage Student</h1>
<br />
@using (Html.BeginForm("Index", "StudentTable", FormMethod.Get))
{
    <p>
         @Html.DropDownListFor(m => m., (List<SelectListItem>)ViewBag.ClassT, new { @class = "form-control"}),
        <b>Student Name:</b> @Html.TextBox("p");
        <input type="submit" value="Ara">
    </p>
}
<table id="tbl1" class="table table-bordered">
    <tr>
        <th>
            Student ID
        </th>
        <th>
            Student Name
        </th>
        <th>
            Student Class
        </th>
        <th>
            Edit
        </th>
        <th>
            Delete
        </th>
    </tr>
    <tbody>
        @foreach (var item in Model)
        {
            <tr>
                <td>
                    @item.Id
                </td>
                <td>
                    @item.Name
                </td>
                <td>
                    @item.Class.ClassName
                </td>
                <td>
                    <a href="/StudentTable/EditStudent/@item.Id" class="btn btn-success">Edit</a>
                </td>
                <td>
                    <a href="/StudentTable/Delete/@item.Id" class="btn btn-danger">Delete</a>
                </td>
            </tr>
        }
    </tbody>
</table>

<a href="/StudentTable/AddStudent"  class="btn btn-primary">Add Student</a>

Controller

StudentDatabaseContext db = new StudentDatabaseContext();
public IActionResult Index(string p)
{
    var studentList = db.StudentTables.Include(x => x.Class).ToList();
    var degerler = from d in db.StudentTables select d;
    if (!string.IsNullOrEmpty(p))
    {
        degerler = degerler.Where(m => m.Class.ClassName.Contains(p));
    }
    return View(degerler.ToList());
}

Model

using System;
using System.Collections.Generic;

namespace StudentApp.Models.Entity
{
    public partial class StudentTable
    {
        public int Id { get; set; }
        public string? Name { get; set; }
        public int ClassId { get; set; }

        public virtual ClassTable? Class { get; set; }
    }
}

我遇到了这样的问题:

在此处输入图像描述

正如您在图片中看到的,我无法访问名为Class.ClassName的数据。 我的目标是列出 DropDownListFor 中的项目。 为什么会这样? 我该如何解决? 感谢帮助。

在 controller 中。 添加这个

ViewBag.ClassT = new SelectList((from s in db.Class.OrderBy(a => a.Code)
                                          select new { ID = s.Id, 
                                           FullDescription = s.Code }),
                                         "ID", "FullDescription");

在视图中

@Html.DropDownListFor(m => m.ClassId, (SelectList)ViewBag.ClassT,"-Select-",new { @class = "form-control})

暂无
暂无

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

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