c# - 可选参数必须是引用类型、可空类型或声明为可选参数。该怎么办?
问题描述
public ActionResult Applicant(int JobPostId)
{
List<JobSeeker> jobSeekers = new List<JobSeeker>();
var ApplicationList = db.JobApplications.Where(x => x.JobPostId == JobPostId).ToList();
foreach(JobApplication app in ApplicationList)
{
jobSeekers.Add(db.Users.OfType<JobSeeker>().Single(x => x.Id == app.JobSeekerId));
}
// var JobseekerForJobPost = db.Users.OfType<JobSeeker>().Where(x => x.JobPostsAppliedFor.Any(y => y.JobPostID == JobPostId)).ToList();
return View(jobSeekers);
}
@Html.ActionLink("View Applicants", "Applicant", new { id = item.JobPostID }) |
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
我无法弄清楚为什么它给了我错误。
解决方案
您的操作方法有一个值类型参数 (an int
):
public ActionResult Applicant(int JobPostId)
但是您没有为路线提供价值:
Html.ActionLink("View Applicants", "Applicant", new { id = item.JobPostID })
该错误告诉您必须为该参数提供一个值,因为int
否则不能null
。如果您希望此值可能为null
,请将其设为可为空:
public ActionResult Applicant(int? JobPostId)
或者,如果它不应该为空,请为其提供一个值:
Html.ActionLink("View Applicants", "Applicant", new { JobPostID = item.JobPostID })
(从您在该操作方法中对该值的使用来看,它看起来不应该是null
。但我想它可能在您的数据中。)
旁注:按照 C# 约定,变量应为小写:
public ActionResult Applicant(int jobPostId)
和:
Html.ActionLink("View Applicants", "Applicant", new { jobPostID = item.JobPostID })
推荐阅读
- node.js - nodejs:如何仅将重定向设置为 expressjs 上的基本 url?
- ruby-on-rails - 仅当创建或更新具有特定名称值的记录以及特定部分时,如何在 Rails 6(热线)中发送 broadcasts_to?
- c# - 如何使用 Twilio AMD 留下语音邮件?
- r - 如何根据条件将文本附加到列?
- python - 如何遍历和比较数据帧的值?
- laravel - 请提供有效的缓存路径。使用 Laravel
- node.js - npm install bcrypt@5 失败
- list - 如何使用颤振使列表视图滚动 360
- database - 是否可以共享需要登录的表单而无需共享您的登录信息?
- html - 如何显示变量内容