asp.net-core-mvc - Infragistics igGrid 导致 MissingManifestResourceException 错误
问题描述
平台详细信息:IgniteUI、C#、Asp.Net Core 2.0 (MVC)、HTML5 和基本 JS
我需要帮助来理解这个错误是什么以及为什么会被抛出。我试过用谷歌搜索它,但我发现的唯一信息指向加载乱序的东西。我们在其他地方使用 iggrid 没有问题,所以我认为库和程序集(和排序)已经涵盖了。错误内容如下:
“MissingManifestResourceException:找不到任何适合指定区域性或中性区域性的资源。确保“Infragistics.Web.Mvc.Resources.CommonStrings.resources”在编译时正确嵌入或链接到程序集“Infragistics.Web.AspNetCore”中,或者所需的所有附属程序集都是可加载和完全签名的。”
该页面使用一个文件并以网格的形式提供反馈。计算反馈,并通过视图模型传递到页面。这是视图模型:
namespace GCFF.Web.Models
{
public class MassUploadViewModel
{
public int? recordsRead { get; set; }
public int recordsModified { get; set; }
public int recordsUnmodifiedCancelSAP { get; set; }
public int recordsUnmodifiedAmount { get; set; }
public int failedMultiple { get; set; }
public int failedNoMatch { get; set; }
public GridModel FailedItemsGrid { get; set; }
}
}
在我的控制器中,我设置了这些属性中的每一个,调用一个方法来设置网格属性,我构建了一个列表并将其设置为数据源,然后返回模型。这是(部分)该代码:
var failedRequestsList = new List<MassUploadRequest>();
foreach (MassUploadRequest m in requests.Where(t => t.Response == "Failed - Matched Multiple")) {
failedRequestsList.Add(m);
}
model.recordsRead = requests.Count();
model.failedMultiple = requests.Count(t => t.Response == "Failed - Matched Multiple");
model.FailedItemsGrid = SetMUGridProperties();
model.FailedItemsGrid.DataSource = failedRequestsList;
return View(model);
SetMUGridProperties 方法设置 ifGrid 的参数,如下:
public GridModel SetMUGridProperties()
{
GridModel grdmodel = new GridModel();
grdmodel.AutoGenerateColumns = false;
grdmodel.Width = "100%";
grdmodel.Height = "445px";
grdmodel.DefaultColumnWidth = "*";
grdmodel.PrimaryKey = "RequestID";
grdmodel.ResponseDataKey = "Records";
grdmodel.RenderCheckboxes = false;
grdmodel.AutoCommit = false;
grdmodel.EnableUTCDates = true;
GridColumn RequestID = new GridColumn();
RequestID.Key = "RequestID";
RequestID.HeaderText = "Request ID";
RequestID.DataType = "number";
RequestID.Width = "90px";
GridColumn RTC = new GridColumn();
RTC.Key = "rtcCode";
RTC.HeaderText = "RTC";
RTC.DataType = "string";
RTC.Width = "85px";
GridColumn TemplateID = new GridColumn();
TemplateID.Key = "TemplateID";
TemplateID.HeaderText = "Template ID";
TemplateID.DataType = "number";
TemplateID.Width = "90px";
GridColumn FCItemDate = new GridColumn();
FCItemDate.Key = "FCItemDate";
FCItemDate.HeaderText = "Date";
FCItemDate.DataType = "date";
FCItemDate.DateDisplayType = DateDisplayType.UTC;
FCItemDate.Width = "95px";
FCItemDate.ColumnCssClass = "borderright";
GridColumn Amount = new GridColumn();
Amount.Key = "Amount";
Amount.HeaderText = "Amount";
Amount.DataType = "number";
Amount.Format = "0.00";
GridColumn AmountTMSUpload = new GridColumn();
AmountTMSUpload.Key = "AmountTMSUpload";
AmountTMSUpload.HeaderText = "Amount - TMS Upload";
AmountTMSUpload.DataType = "number";
AmountTMSUpload.Format = "0.00";
GridColumn Response = new GridColumn();
Response.Key = "Response";
Response.HeaderText = "Failed Reason";
Response.DataType = "string";
grdmodel.Columns.Add(RequestID);
grdmodel.Columns.Add(RTC);
grdmodel.Columns.Add(TemplateID);
grdmodel.Columns.Add(FCItemDate);
grdmodel.Columns.Add(Amount);
grdmodel.Columns.Add(AmountTMSUpload);
grdmodel.Columns.Add(Response);
GridSorting sorting = new GridSorting();
sorting.Mode = SortingMode.Single;
sorting.ColumnSettings = new List<ColumnSortingSetting>() { new ColumnSortingSetting() { ColumnKey = "Response", AllowSorting = false } };
grdmodel.Features.Add(sorting);
GridResizing resizing = new GridResizing();
resizing.AllowDoubleClickToResize = true;
grdmodel.Features.Add(resizing);
GridFiltering filtering = new GridFiltering();
filtering.ColumnSettings = new List<ColumnFilteringSetting>() { new ColumnFilteringSetting() { ColumnKey = "RequestID", AllowFiltering = false } };
grdmodel.Features.Add(filtering);
return grdmodel;
}
最后,这是(大部分)与这一切相关的页面代码。
@using Infragistics.Web.Mvc
@model GCFF.Web.Models.MassUploadViewModel
@{
ViewData["Title"] = "Mass Upload";
Layout = "_Layout";
}
@using (Html.BeginForm("MassUpload", "Forecast", FormMethod.Post, new { @enctype = "multipart/form-data" }))
{
@Html.AntiForgeryToken()
~upload input
~submit button
~feedback section
@(Html.Infragistics().Grid(Model.FailedItemsGrid))
}
<script type="text/javascript">
$(function () {
var recordsRead = '@Model.recordsRead';
if (recordsRead == '') {
$('#uploadresults').hide();
}
else {
$('#recordsRead').text('@Model.recordsRead');
$('#failedMultiple').text('@Model.failedMultiple');
}
});
</script>
解决方案
我们想通了。我已经在属性中为网格打开了过滤
GridFiltering filtering = new GridFiltering();
filtering.ColumnSettings = new List<ColumnFilteringSetting>() { new ColumnFilteringSetting() { ColumnKey = "RequestID", AllowFiltering = false } };
grdmodel.Features.Add(filtering);
但是数据源对象不是可查询的格式,因此导致 igGrid 失败。这是修复(AsQueryable())
model.FailedItemsGrid.DataSource = failedRequestsList.AsQueryable();
推荐阅读
- python - Python urllib 编码的 url 有一个额外的字符
- apache-spark - 用户定义函数返回系列
- html - 如何更改 CSS 样式取决于设备类型,忽略设备分辨率
- python - 如何从 django-filter 更改 OrderingFilter 中的基本选择?
- algorithm - 如何解决两门一摄像头的问题?
- reactjs - 如何在 ReactJS 表单电话号码输入中启用退格但防止删除国家代码?
- r - R中变异内的多个ifelse函数
- appium - 我正在尝试通过 jenkins 执行测试用例,但遇到问题并且没有访问 appium 服务器
- python - 使用 paho mqtt 将不同的有效负载发布到不同的 mqtt 主题
- python - 初学者她。谁能解释一下这句话。谢谢