ASP.NET MVC框架是一个开源Web应用程序框架和工具,它实现了针对Web应用程序定制的模型 - 视图 - 控制器(MVC)模式的版本,并构建在ASP.NET技术基础之上。
如何在ASP.NET Core MVC中实现ASP.NET MVC Server.Transfer同样的效果?
我对这种迁移很陌生。请帮助我! TransferResult:从 ASP.NET MVC 迁移时,ASP.NET Core 8.0 MVC 是否需要此功能? (基于马库斯·奥尔森的回答) 如果是的话,如何改变...
验证 .NET Core Identity 中的 ASP.NET Core EF Identity 用户
我编写了一个 ASP.NET Core 8.0 Web API 项目,该项目使用旧版 ASP.NET MVC 项目(在 .NET 4.6 上)的数据库。 我已经成功连接了身份框架,并且我正在拉...
如何更改属于某些角色的用户(假设为“管理员”)的登录页面。 更具体地说,当角色“管理员”的用户访问应用程序站点时(...
无法从 NuGet 安装 Microsoft.AspNet.WebApi.Cors
我刚刚将我的项目从 2010 年的 Visual Studio 升级到 2013 年,以支持我的 WebApi 中的跨源资源共享 (CORS)。 现在,当我从 NuGe 安装 Microsoft.AspNet.WebApi.Cors 包时...
如何在 ASP.NET MVC 中获取客户端的 IP 地址?
我对 ASP.NET MVC 堆栈完全陌生,我想知道简单的 Page 对象和 Request ServerVariables 对象发生了什么? 基本上,我想拉出客户端PC的IP广告...
EPPlus - .NET - 在 Excel 包中加载时保留 VBA 项目
我正在加载现有的xlsm(启用宏)文件,用数据填充它,并输出要由用户下载的流。 当我这样做时,Excel 说“无法打开文件,因为...
我有一个项目。我设计了2个区域。一份用于我网站的用户,一份用于管理面板。客户必须登录,管理员用户也必须登录。我不希望任何人进入该网站或...
Azure Pipelin:如何以正常文件结构发布 ASP.NET MVC 应用程序
我有一个包含多个项目的解决方案。我想获取(在工件中)项目 UserUi.csproj,它是一个 ASP.NET MVC 应用程序(引用解决方案中的其他库),准备好...
临时目录中自动生成的“App_Web********.cs”文件导致构建错误
所以这已经困扰我一段时间了,但有时在我的 Visual Studio 2013 ASP.NET MVC4 项目中,我会删除一个未使用的 ViewModel 类,并且在下一次编译时会出现一个错误,看起来...
更新数据库时出现 ASP.NET Code-First(实体框架)错误
我就直接进入正题了。 我实际上正在尝试在这里学习 C# asp.net mvc 模式,并且我正在使用实体框架代码优先方法,但是当我尝试输入更新数据时...
我是 C# 的初学者,我在代码中遇到问题,我使用 Edit 方法作为索引,所以我使用 AddAsync,但是当我运行代码时它只是跳过该行,而且它也没有保存...
我正在尝试在模式对话框中显示 FullCalendar。可以在 div 元素内查看完整的日历。但我想在模式对话框中显示它。 这是代码: 我正在尝试在模式对话框中显示 FullCalendar。可以在 div 元素内查看完整的日历。但我想在模式对话框中显示它。 这是代码: <button type="button" class="btn btn-primary" onclick="getCalendarEvents()">Depot Calendar</button> <div class="row"> <div class="att-area" id="empcalendar"> </div> </div> <script> var empevents = []; function getCalendarEvents(empevents) { $('#empcalendar').fullCalendar('destroy'); $('#empcalendar').fullCalendar({ defaultView: 'month', handleWindowResize: true, header: { left: 'prev,next today', center: 'title', right: 'month,basicWeek,basicDay,agenda' }, eventLimit: true, events: empevents }); } </script> empevents数组显示数据如下 {empid: 159, title: 'XXXXX - UnPaid', start: Tue Jan 02 2024 00:00:00 GMT+0000 (Greenwich Mean Time), end: Tue Jan 02 2024 00:00:00 GMT+0000 (Greenwich Mean Time), allDay: true} {empid: 9, title: 'YYY - UnPaid', start: Tue Jan 02 2024 00:00:00 GMT+0000 (Greenwich Mean Time), end: Tue Jan 02 2024 00:00:00 GMT+0000 (Greenwich Mean Time), allDay: true} 有关如何在模式对话框中显示完整日历,您可以遵循以下工作演示: <button type="button" class="btn btn-primary" onclick="showCalendarModal()">Depot Calendar</button> <!-- Modal Structure --> <div class="modal fade" id="calendarModal" tabindex="-1" role="dialog" aria-labelledby="calendarModalLabel" aria-hidden="true"> <div class="modal-dialog modal-lg" role="document"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title" id="calendarModalLabel">Depot Calendar</h5> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">×</span> </button> </div> <div class="modal-body"> <div id="empcalendar"></div> <!-- Calendar container --> </div> <div class="modal-footer"> <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button> </div> </div> </div> </div> <link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css" /> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/fullcalendar/3.10.2/fullcalendar.min.css" /> <script src="~/lib/jquery/dist/jquery.min.js"></script> <script src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.27.0/moment.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/fullcalendar/3.10.2/fullcalendar.min.js"></script> <script> // Array of events to be displayed in the calendar var empevents = [ { empid: 159, title: 'XXXXX - UnPaid', start: '2024-01-02', end: '2024-01-02', allDay: true }, { empid: 9, title: 'YYY - UnPaid', start: '2024-01-02', end: '2024-01-02', allDay: true } ]; // Function to show the modal and initialize FullCalendar function showCalendarModal() { $('#calendarModal').modal('show'); // Show the modal } // When the modal is shown, initialize or refresh the FullCalendar $('#calendarModal').on('shown.bs.modal', function () { initializeCalendar(empevents); }); // Function to initialize or refresh FullCalendar function initializeCalendar(events) { $('#empcalendar').fullCalendar('destroy'); // Destroy any existing calendar instance $('#empcalendar').fullCalendar({ defaultView: 'month', handleWindowResize: true, header: { left: 'prev,next today', center: 'title', right: 'month,basicWeek,basicDay' }, eventLimit: true, events: events // Pass the events data to the calendar }); } // Function to dynamically update the calendar events if you need function getCalendarEvents(newEvents) { empevents = newEvents; initializeCalendar(empevents); } </script>
Bootstrap 和 Font Awesome 图标未出现
我的 _layout 中有这段代码,它会按照我想要的方式呈现我想要的内容。 现在,在我的不同视图中(请参阅第二个代码片段),我尝试使用 Bootstrap 或 Font Awesome 插入一些图标,但不是......
我的页面上有 3 个不同的功能。 1.) 搜索,2.) 排序和 3.) 分页 我已经完成了所有这些工作,但我想知道是否有人知道如何操作,或者可以向我指出如何保存的地方,...
MVC .NET Framework 中的分页不起作用,如何让它工作
我尝试使用实体框架将旧的 asp.net webforms 应用程序转换为 MVC 应用程序。我使用scaffold-DbContect 命令生成了该应用程序的模型,该命令是...
我已经从 NuGet Link 添加了 ReflectionIT.Mvc.Paging 但我遇到了问题。 在控制器中,我有两种方法:索引和组织。当我在组织视图中并按带有 num 的页面时...
MVC 增删改查操作,分页并在更新第 2,3..n 页上的记录后保留同一页面
(使用另一个视图进行编辑)[非部分视图]。单击“保存”后...应打开同一页面,其中包含已更新的记录而不是第一页。 控制中的索引方法...
webgrid 中的分页在 asp.net mvc 5 中不起作用
我有以下视图和控制器。问题是,当启用分页并单击下一页时,上一个视图消失了 @使用系统 @使用System.Web.Helpers @*@型号列表 我有以下视图和控制器。问题是,当启用分页并单击下一页时,上一个视图消失了 @using System @using System.Web.Helpers @*@model List<DataTransferObjects.UserClaimHistory>*@ <!DOCTYPE html> <html lang="en"> <head runat="server"> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link href="~/Content/style.css" rel="stylesheet" type="text/css" /> @*<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>*@ <script src="~/Scripts/jquery-1.7.1.js"></script> <style> /*Here I will write some css for looks good*/ th, td { padding: 5px; } th { background-color: gray; } </style> </head> @{ ViewBag.Title = "ViewReports"; var grid = new WebGrid(Model, canPage: false, rowsPerPage: 2, selectionFieldName: "selectedRow", ajaxUpdateContainerId: "gridContent", canSort: false); } @{ var fromDateVal = (DateTime)ViewBag.fromDate; var toDateVal = (DateTime)ViewBag.toDate; } @using (Html.BeginForm("Index", "ViewReport", FormMethod.Post)) { <div class="container"> @{ var homeHeader = Html.Partial("_HomeHeader"); } @homeHeader <div id="logout-div"> @Html.ActionLink("Log Out", "Logout", "Home", null, null ) </div> @{ var homeLeftPanel = Html.Partial("_HomeLeftPanel"); } @homeLeftPanel <div> From Date: @Html.TextBox("fromDate", string.Format("{0:yyyy-MM-dd}", fromDateVal), new { @id = "fromDate", @class = "datefield", type = "date" }) To Date: @Html.TextBox("toDate", string.Format("{0:yyyy-MM-dd}", toDateVal), new { @id = "toDate", @class = "datefield", type = "date" }) <input type="submit" value="Search" /> </div> <div id="main" style="padding: 25px;"> @grid.GetHtml( htmlAttributes: new { id = "MainGrid", width = "60%" }, tableStyle: "table table-bordered table-responsive", headerStyle: "header", alternatingRowStyle: "alt", selectedRowStyle: "select", columns: grid.Columns( grid.Column("UserName", "User Name"), grid.Column("Email", "Email"), grid.Column("Claim", "Accessed"), grid.Column(header: "AccessedOn", format: (item) => string.Format("{0:dd-MM-yyyy}", item.AccessedOn)), grid.Column(format: (item) => { if (item.Count > 1) { var subGrid = new WebGrid(source: item.List, canSort: false); return subGrid.GetHtml(displayHeader: true, htmlAttributes: new { id = "SubGrid", width = "100%" }, columns: subGrid.Columns( subGrid.Column("UserName", "User Name"), subGrid.Column("Email", "Email"), subGrid.Column("Claim", "Accessed"), subGrid.Column("AccessedOn", "AccessedOn") ) ); } else { return null; } }) ) ) <script> $(document).ready(function () { var size = $("#main #MainGrid > thead > tr > th").size(); // get total column $("#main #MainGrid > thead > tr > th").last().remove(); // remove last column $("#main #MainGrid > thead > tr").prepend("<th></th>"); // add one column at first for collapsible column $("#main #MainGrid > tbody > tr").each(function (i, el) { $(this).prepend( $("<td></td>") .addClass("expand") .addClass("hoverEff") .attr('title', "click for show/hide") ); //Now get sub table from last column and add this to the next new added row var table = $("table", this).parent().html(); // // alert(table); //add new row with this subtable // ADD CLICK EVENT FOR MAKE COLLAPSIBLE if (table !== null) { $(this).after("<tr><td></td><td style='padding:5px; margin:0px;' colspan='" + (size - 1) + "'>" + table + "</td></tr>"); $("table", this).parent().remove(); $(".hoverEff", this).live("click", function () { $(this).parent().closest("tr").next().slideToggle(100); $(this).toggleClass("expand collapse"); }); } else { $(this).find('td:eq(0)').removeClass(); } }); //by default make all subgrid in collapse mode $("#main #MainGrid > tbody > tr td.expand").each(function (i, el) { $(this).toggleClass("expand collapse"); $(this).parent().closest("tr").next().slideToggle(100); }); }); </script> </div> @if (ViewBag.Count > 0) { <div> @Html.ActionLink("Export", "ExportToExcel", "ViewReport", new { fromDate = fromDateVal, toDate = toDateVal}, null) </div> } @{ var homeFooter = Html.Partial("_HomeFooter"); } @homeFooter </div> } </html> 这是控制器: public ActionResult Index(DateTime? fromDate, DateTime? toDate) { if (!fromDate.HasValue) fromDate = DateTime.Now.Date; if (!toDate.HasValue) toDate = fromDate.GetValueOrDefault(DateTime.Now.Date).Date.AddDays(1); if (toDate < fromDate) toDate = fromDate.GetValueOrDefault(DateTime.Now.Date).Date.AddDays(1); ViewBag.fromDate = fromDate; ViewBag.toDate = toDate; var userClaims = DbAccessWebApiHandler.GetUserClaimAccesshistory(new DateSelection { StartDate = fromDate.Value, EndDate = toDate.Value }); if (userClaims != null) { ViewBag.Count = userClaims.Count; var newList = userClaims.GroupBy(x => new { x.UserName, x.Email, x.Claim, x.AccessedOn.Date }) .Select(y => new UserClaimHistoryGroup { UserName = y.Key.UserName, Email = y.Key.Email, Claim = y.Key.Claim, AccessedOn = y.Key.Date, List = y.ToList(), Count = y.ToList().Count }); return View(newList); } userClaims = new List<UserClaimHistory>(); return View(userClaims); } [System.Web.Mvc.HttpGet] public ActionResult ExportToExcel(DateTime? fromDate, DateTime? toDate) { if (!fromDate.HasValue) fromDate = DateTime.Now.Date; if (!toDate.HasValue) toDate = fromDate.GetValueOrDefault(DateTime.Now.Date).Date.AddDays(1); if (toDate < fromDate) toDate = fromDate.GetValueOrDefault(DateTime.Now.Date).Date.AddDays(1); ViewBag.fromDate = fromDate; ViewBag.toDate = toDate; var userClaims = DbAccessWebApiHandler.GetUserClaimAccesshistory(new DateSelection { StartDate = fromDate.Value, EndDate = toDate.Value }); if (userClaims != null) { var gv = new GridView(); gv.AutoGenerateColumns = false; gv.Columns.Add(new BoundField { HeaderText = "UserName", DataField = "UserName" }); gv.Columns.Add(new BoundField { HeaderText = "Email", DataField = "Email" }); gv.Columns.Add(new BoundField { HeaderText = "Accessed", DataField = "Claim" }); gv.Columns.Add(new BoundField { HeaderText = "Date", DataField = "AccessedOn" }); var dt = new DataTable(); dt.Columns.Add("UserName"); dt.Columns.Add("Email"); dt.Columns.Add("Claim"); dt.Columns.Add("AccessedOn"); foreach (var item in userClaims) { dt.Rows.Add(item.UserName, item.Email, item.Claim, item.AccessedOn); } gv.DataSource = dt; gv.DataBind(); for (var i = 0; i < userClaims.Count; i++) { gv.Rows[i].Height = 40; } Response.ClearContent(); Response.Buffer = true; Response.AddHeader("content-disposition", "attachment; filename=Reports.xls"); Response.ContentType = "application/ms-excel"; Response.Charset = ""; var sw = new StringWriter(); var htw = new HtmlTextWriter(sw); gv.RenderControl(htw); Response.Output.Write(sw.ToString()); Response.Flush(); Response.End(); } return View("Index"); } 能够通过以下脚本工作 var links = $('a[href*=page], a[href*=sort]'), form = $('form'); links.click(function () { form.attr("action", this.href); $(this).attr("href","javascript:"); form.submit(); }); 如在 MVC4 站点中进行排序或分页操作期间如何让 WebGrid 以 POST 而不是 GET 方式进行操作?
我的通用存储库中有以下功能。我对 var list = query.ToPagedList(pageNumber, pageSizeNumber); 行有两个问题 公共 IEnumerable GetPagedListDbContext(字符串
我的网站上包含了 Mvc4.Paging 包,现在我需要翻译如下单词: 显示第 53 项中的第 51 项到第 53 项。 或者 第 1 页,共 5 页 这是分页代码: @Html.PagedListPager(模型,