C# 使用枚举显示数据时出错
视图出现一秒钟,然后抛出以下错误- 参数字典包含不可为空的类型为“Project.Enumerators.SortResultEnum”的参数“sortField”的空条目,用于方法“System.Threading.Tasks.Task”C# 使用枚举显示数据时出错,c#,ajax,enums,C#,Ajax,Enums,视图出现一秒钟,然后抛出以下错误- 参数字典包含不可为空的类型为“Project.Enumerators.SortResultEnum”的参数“sortField”的空条目,用于方法“System.Threading.Tasks.Task”1[System.Web.Mvc.ActionResult]详细信息(Project.Enumerators.SortResultEnum,System.Web.Helpers.SortDirection,System.String,System.nullab
1[System.Web.Mvc.ActionResult]详细信息(Project.Enumerators.SortResultEnum,System.Web.Helpers.SortDirection,System.String,System.nullable
1[System.Int32])'在'Project.Controllers.SearchController'中'。可选参数必须是引用类型、可为null的类型或声明为可选参数。
参数名称:参数
我有一个表单正在进行ajax调用,稍后ajax调用将其转发给控制器
Ajax调用:
$(document).on('submit', '#SearchForm', function () {
var $form = $(this);
var $searchString = $("#SearchString").val();
var $sortField = $form.attr("data-sortOrder");
var $sortDirection = $form.attr("data-sortDirection");
SortResults($sortField, $sortDirection, $searchString);
});
表格:
@TextBox(“SearchString”,ViewBag.CurrentSearchString作为字符串,新建{id=“SearchString”,@class=“form control”,placeholder=”“})
控制器的动作就像
public async Task<ActionResult> Details(SortResultEnum sortField,SortDirection sortDirection, string searchString, int? page)
{
//code to call service and get result is here
// partial view is being used to display data
}
公共异步任务详细信息(SortResultEnum sortField、SortDirection SortDirection、string searchString、int?页)
{
//调用服务并获取结果的代码在这里
//局部视图用于显示数据
}
有人能帮我解决这个错误吗。谢谢。我想你错过了数据排序中的“”。
试试这个
data-sortOrder="@SortResultEnum.ClientName"
错误消息告诉您您的操作没有收到tis
sortField
参数的值。调试代码以了解原因。大概$form.attr(“数据排序器”)
不会生成有效值。如果是这样的话,那么这个值肯定在某个地方丢失了。调试以找出位置。顺便问一下,为什么要在变量前面加上$
?您将枚举值传递给控制器sortField
,而不是完整的枚举。必须将SortResultEnum sortField
替换为string sortField
。控制器操作方法应具有以下参数公共异步任务详细信息(字符串sortField、字符串sortDirection、字符串searchString、int?page)
@mmushtaq,这是不正确的。该参数应接收类型为SortResultEnum
的值,因此应将其声明为该类型。问题是没有传递这样的值。正确的值是以$form.attr(“数据排序器”)的形式接收的。我的表单出现了一秒钟,然后丢失,出现了错误。我已经检查了在PartialView中传递的模型是否具有所有正确的values@jmcilhinney我想知道OP如何将Enum
类型参数传递给控制器。正如下面所建议的,枚举值应作为int
或string
传递,并在控制器中将这些值转换为枚举类型。这会有什么区别?我在传递给PartialView的模型中得到了正确的值。partialView出现一秒钟,然后消失,出现错误消息ReplaceResults(response);以前从未使用或见过此功能。它是默认函数还是你自己的???我刚做的。
data-sortOrder="@SortResultEnum.ClientName"