簡體   English   中英

可選參數必須是引用類型,可為空的類型,或者必須聲明為可選參數。 該怎么辦?

[英]An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. What to do?

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 }
    );
}

我不知道為什么它給我錯誤。

您的操作方法具有一個值類型參數(一個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 })

只需設置您的參數

public ActionResult Applicant(int JobPostId)

可選的

public ActionResult Applicant(int? JobPostId)

在路由中,它被映射為可選,這就是為什么必須將其設置為可空的原因

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM