使用Guid作为可选参数给出的'参数需要类型为'System.Nullable'的值
本文关键字:参数 类型 的值 Nullable System Guid 使用 | 更新日期: 2023-09-27 18:03:46
我只是有帮助链接我的模型到我的视图模型在这个控制器-这似乎是有效的。下面是代码:
public ActionResult TechSearchKnowledgebase([Optional]Guid? createdById, [Optional]Guid? categoryId, [Optional]Guid? typeId)
{
var model = db.Knowledgebases.AsQueryable();
if (createdById != Guid.Empty)
{
model = model.Where(k => k.CreatedById == createdById);
ViewBag.CreatedBy = db.Users.Where(c => c.UserId == createdById).First().FullName;
}
if (categoryId != Guid.Empty)
{
model = model.Where(k => k.CategoryId == categoryId);
ViewBag.Category = db.Categories.Where(c => c.CategoryId == categoryId).First().CategoryName;
}
if (typeId != Guid.Empty)
{
model = model.Where(k => k.TypeId == typeId);
ViewBag.Category = db.Roles.Where(c => c.RoleID == typeId).First().RoleDescription;
}
model=model.OrderBy(k => k.CreatedDate);
List<KnowledgebaseResult> knowledgebaseResults = Mapper.Map<List<KnowledgebaseResult>>(model.ToList());
return View("TechKnowledgebaseList", knowledgebaseResults);
}
我有一个问题的代码虽然:
如果我加载它,我得到这个错误:
parameters字典中包含一个无效的parameter条目方法System.Web.Mvc.ActionResult的'categoryId'TechSearchKnowledgebase(系统。可空的
1[System.Guid], System.Nullable
1[系统。Guid)系统。可为空的1[System.Guid])' in 'HelpDesk.WebUI.Controllers.KnowledgebaseController'. The dictionary contains a value of type 'System.Reflection.Missing', but the parameter requires a value of type 'System.Nullable
1[System.Guid]。参数名称:parameters
我不熟悉在您的TechSearchKnowledgebase
方法中用于声明可选参数的语法。根据您想要做的事情,尝试以下操作之一:
1)移除[Optional]标签。你的方法看起来像这样:
TechSearchKnowledgebase(Guid? createdById, Guid? categoryId, Guid? typeId)
这些现在是可空的Guid参数,你可以调用这个方法作为TechSearchKnowledgebase(null, null, null);
这满足你的需要吗?
2)如果你确实需要可选参数,请查看已命名参数和可选参数。您可以看到,可选参数都是在必需参数之后声明的,并且它们都指定了默认值。由于您正在使用Guid,我的猜测是您不希望这些真正成为可选参数,或者您希望指定Guid。默认值为空。如果后者为真,则方法定义如下:
public ActionResult TechSearchKnowledgebase(Guid? createdById = Guid.Empty, Guid? categoryId = Guid.Empty, Guid? typeId = Guid.Empty)
如果我误解了你的问题,请澄清并提供代码,你在哪里调用这个方法