繁体   English   中英

ASP.Net MVC筛选

[英]ASP.Net MVC Filtering

THEAPP: ASP.NET MVC CRUD应用程序Visual Studio 2013

完成:通过将“列”(扇区)值渲染到下拉列表中来创建过滤器选项。 因此,用户可以从下拉列表中选择一个扇区,然后单击提交以过滤表中的记录

要求:根据COLUMN(扇区)值在表上过滤记录。

在记录表中,假设COLUMN [Sector]具有=> IT,管理,营销,abc,xyz,

需要像导航栏一样获取所有扇区值。 一旦在该列表上单击一个扇区(MARKETING),则该表应列出仅具有该部门(MARKETING)的记录

注意:用户能够插入新记录,因此能够创建新的扇区名称,因此呈现给导航栏的链接应该是动态的

因为我是该语言和MVC的新手,所以我不知道该如何代替使用DROP DOWN LIST来使用LIST VIEW

控制器代码

PipelineController.cshtml

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Net;
using System.Web;
using System.Web.Mvc;
using PipelineApp.Models;

namespace PipelineApp.Controllers
{
    public class PipelineController : Controller
    {
        private PipelineEntities db = new PipelineEntities();

        // GET: /Pipeline/
        //public ActionResult Index()
        //{
        //    return View(db.Pipelinedatas.ToList());
        //}

        //CUSTOM GET: /Pipelinedata/Sector filtering
        //public ActionResult Index(string sector)
        //{

        //    ViewBag.Sector = (from r in db.Pipelinedatas
        //                      select r.Sector).Distinct();

        //    var model = from r in db.Pipelinedatas
        //                where r.Sector == sector || sector == null || sector == ""
        //                select r;

        //    return View(model);
        //}




        //CUSTOM GET: /Pipelinedata/ Sector Filtering/ Sort Order
        public ActionResult Index(string sector, string sortOrder, int? page)
        {
            //Filter Secors ------------------------------
            ViewBag.Sector = (from r in db.Pipelinedatas
                              select r.Sector).Distinct();

            //---------------------------------------------

            var model = from r in db.Pipelinedatas
                        where r.Sector == sector || sector == null || sector == ""
                        select r;


            //Sort Order ----------------------------------
            ViewBag.CurrentSort = sortOrder; //Paging

            ViewBag.EmployerSortParm = String.IsNullOrEmpty(sortOrder) ? "emp_name" : "";
            ViewBag.ITOSortParm = String.IsNullOrEmpty(sortOrder) ? "ITO" : "";
            ViewBag.JanSortParm = String.IsNullOrEmpty(sortOrder) ? "January" : "";
            ViewBag.FebSortParm = String.IsNullOrEmpty(sortOrder) ? "February" : "";
            ViewBag.MarSortParm = String.IsNullOrEmpty(sortOrder) ? "March" : "";
            ViewBag.AprSortParm = String.IsNullOrEmpty(sortOrder) ? "April" : "";
            ViewBag.MaySortParm = String.IsNullOrEmpty(sortOrder) ? "May" : "";
            ViewBag.JunSortParm = String.IsNullOrEmpty(sortOrder) ? "June" : "";
            ViewBag.JulSortParm = String.IsNullOrEmpty(sortOrder) ? "July" : "";
            ViewBag.AugSortParm = String.IsNullOrEmpty(sortOrder) ? "August" : "";
            ViewBag.SepSortParm = String.IsNullOrEmpty(sortOrder) ? "September" : "";
            ViewBag.OctSortParm = String.IsNullOrEmpty(sortOrder) ? "October" : "";
            ViewBag.NovSortParm = String.IsNullOrEmpty(sortOrder) ? "November" : "";
            ViewBag.DecSortParm = String.IsNullOrEmpty(sortOrder) ? "December" : "";

            ViewBag.SectorSortParm = sortOrder == "sec" ? "ITO" : "sec";

            switch (sortOrder)
            {
                case "emp_name":
                    model = model.OrderByDescending(s => s.Employer);
                    break;
                case "sec":
                    model = model.OrderBy(s => s.Sector);
                    break;
                case "ITO":
                    model = model.OrderByDescending(s => s.ITONumber);
                    break;
                case "January":
                    model = model.OrderByDescending(s => s.Jan);
                    break;
                case "February":
                    model = model.OrderByDescending(s => s.Feb);
                    break;
                case "March":
                    model = model.OrderByDescending(s => s.Mar);
                    break;
                case "April":
                    model = model.OrderByDescending(s => s.Apr);
                    break;
                case "May":
                    model = model.OrderByDescending(s => s.May);
                    break;
                case "June":
                    model = model.OrderByDescending(s => s.Jun);
                    break;
                case "July":
                    model = model.OrderByDescending(s => s.Jul);
                    break;
                case "August":
                    model = model.OrderByDescending(s => s.Aug);
                    break;
                case "September":
                    model = model.OrderByDescending(s => s.Sep);
                    break;
                case "October":
                    model = model.OrderByDescending(s => s.Oct);
                    break;
                case "November":
                    model = model.OrderByDescending(s => s.Nov);
                    break;
                case "December":
                    model = model.OrderByDescending(s => s.Dec);
                    break;
                default:
                    model = model.OrderBy(s => s.Id);
                    break;
            }
            //---------------------------------------------

            //Paging --------------------------------------
            //int pageSize = 3;
            //int pageNumber = (page ?? 1);
            //return View(model.ToPagedList(pageNumber, pageSize));
            //---------------------------------------------

            return View(model);

        }




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

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

        // POST: /Pipeline/Create
        // To protect from overposting attacks, please enable the specific properties you want to bind to, for 
        // more details see http://go.microsoft.com/fwlink/?LinkId=317598.
        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Create([Bind(Include="Id,Employer,ITONumber,Description,TECNumber,TECVersion,Level,Credits,Duration,Sector,Status,Approval,Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec")] Pipelinedata pipelinedata)
        {
            if (ModelState.IsValid)
            {
                db.Pipelinedatas.Add(pipelinedata);
                db.SaveChanges();
                return RedirectToAction("Index");
            }

            return View(pipelinedata);
        }

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

        // POST: /Pipeline/Edit/5
        // To protect from overposting attacks, please enable the specific properties you want to bind to, for 
        // more details see http://go.microsoft.com/fwlink/?LinkId=317598.
        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Edit([Bind(Include="Id,Employer,ITONumber,Description,TECNumber,TECVersion,Level,Credits,Duration,Sector,Status,Approval,Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec")] Pipelinedata pipelinedata)
        {
            if (ModelState.IsValid)
            {
                db.Entry(pipelinedata).State = EntityState.Modified;
                db.SaveChanges();
                return RedirectToAction("Index");
            }
            return View(pipelinedata);
        }

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

        // POST: /Pipeline/Delete/5
        [HttpPost, ActionName("Delete")]
        [ValidateAntiForgeryToken]
        public ActionResult DeleteConfirmed(int id)
        {
            Pipelinedata pipelinedata = db.Pipelinedatas.Find(id);
            db.Pipelinedatas.Remove(pipelinedata);
            db.SaveChanges();
            return RedirectToAction("Index");
        }

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

查看代码

Index.cshtml

@model IEnumerable<PipelineApp.Models.Pipelinedata>

@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>
@using (Html.BeginForm())
{
    <text> Sectors </text>
    @Html.DropDownList("sector", new SelectList(ViewBag.Sector))
    <input class="btn" type="submit" value="Filter" />
}


<p>
    @Html.ActionLink("Create New", "Create")
</p>
<table class="table">
    <tr>
        <th>
            @Html.ActionLink("Employer", "Index", new { sortOrder = ViewBag.EmployerSortParm })
            @*@Html.DisplayNameFor(model => model.Employer)*@
        </th>
        <th>
            @Html.ActionLink("ITONumber", "Index", new { sortOrder = ViewBag.ITOSortParm })
            @*@Html.DisplayNameFor(model => model.ITONumber)*@
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Description)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.TECNumber)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.TECVersion)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Level)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Credits)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Duration)
        </th>
        <th>
            @Html.ActionLink("Sector", "Index", new { sortOrder = ViewBag.SectorSortParm })
            @*@Html.DisplayNameFor(model => model.Sector)*@
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Status)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Approval)
        </th>
        <th>
            @Html.ActionLink("Jan", "Index", new { sortOrder = ViewBag.JanSortParm })
            @*@Html.DisplayNameFor(model => model.Jan)*@
        </th>
        <th>
            @Html.ActionLink("Feb", "Index", new { sortOrder = ViewBag.FebSortParm })
            @*@Html.DisplayNameFor(model => model.Feb)*@
        </th>
        <th>
            @Html.ActionLink("Mar", "Index", new { sortOrder = ViewBag.MarSortParm })
            @*@Html.DisplayNameFor(model => model.Mar)*@
        </th>
        <th>
            @Html.ActionLink("Apr", "Index", new { sortOrder = ViewBag.AprSortParm })
            @*@Html.DisplayNameFor(model => model.Apr)*@
        </th>
        <th>
            @Html.ActionLink("May", "Index", new { sortOrder = ViewBag.MaySortParm })
            @*@Html.DisplayNameFor(model => model.May)*@
        </th>
        <th>
            @Html.ActionLink("Jun", "Index", new { sortOrder = ViewBag.JunSortParm })
            @*@Html.DisplayNameFor(model => model.Jun)*@
        </th>
        <th>
            @Html.ActionLink("Jul", "Index", new { sortOrder = ViewBag.JulSortParm })
            @*@Html.DisplayNameFor(model => model.Jul)*@
        </th>
        <th>
            @Html.ActionLink("Aug", "Index", new { sortOrder = ViewBag.AugSortParm })
            @*@Html.DisplayNameFor(model => model.Aug)*@
        </th>
        <th>
            @Html.ActionLink("Sep", "Index", new { sortOrder = ViewBag.SepSortParm })
            @*@Html.DisplayNameFor(model => model.Sep)*@
        </th>
        <th>
            @Html.ActionLink("Oct", "Index", new { sortOrder = ViewBag.OctSortParm })
            @*@Html.DisplayNameFor(model => model.Oct)*@
        </th>
        <th>
            @Html.ActionLink("Nov", "Index", new { sortOrder = ViewBag.NovSortParm })
            @*@Html.DisplayNameFor(model => model.Nov)*@
        </th>
        <th>
            @Html.ActionLink("Dec", "Index", new { sortOrder = ViewBag.DecSortParm })
            @*@Html.DisplayNameFor(model => model.Dec)*@
        </th>
        <th></th>
    </tr>

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.Employer)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.ITONumber)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Description)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.TECNumber)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.TECVersion)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Level)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Credits)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Duration)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Sector)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Status)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Approval)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Jan)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Feb)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Mar)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Apr)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.May)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Jun)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Jul)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Aug)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Sep)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Oct)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Nov)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Dec)
        </td>
        <td>
            @Html.ActionLink("Edit", "Edit", new { id=item.Id }) |
            @Html.ActionLink("Details", "Details", new { id=item.Id }) |
            @Html.ActionLink("Delete", "Delete", new { id=item.Id })
        </td>
    </tr>
}

</table>

参考: http : //www.c-sharpcorner.com/UploadFile/abhikumarvatsa/filter-records-in-mvc/ http://www.asp.net/mvc/tutorials/getting-started-with-ef-5-在一个ASP.NET MVC应用程序中使用MVC-4 /对实体框架进行过滤和分页

在您的情况下,只需单击导航栏中的选项卡,即可使用ajax调用操作方法“索引”。 您的ajax代码如下所示。

$.ajax({
    type: "GET",
    url: "/SomeController/Index",
    data: { 'sector': selectedSector },
    success: function (data) {
       // Here you can assign the partial view returned to an encompassing div
       $('#sectorDiv').html(data); 
    },
    error: function (xhr, status, message) {
    }
});
    @using (Ajax.BeginForm("Index",new AjaxOptions { UpdateTargetId = "result" }))
    {
        @Html.DropDownList("sector", new SelectList(ViewBag.Sector), new { @class = "chzn-select select-block-level" })
        <input class="btn" type="submit" value="Filter" />
    }
<div id="result">
@Html.Partial("gridPartial")
</div>

暂无
暂无

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

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