0

I am trying to send an Employee ID (1) from the EmployeeSelect.cfhtml view to the Workers_Compensation controller method "Create". I used the answers from this question: Using Html.ActionLink to call action on different controller

However, none of these answers work quite properly. When the Select button on the EmployeeSelect screen is pressed I need to navigate from https://localhost:44353/Employees/EmployeeSelect to https://localhost:44353/Workers_Compensation/Create/{ID} . But using the code from that question (and everywhere else I can find) what ends up happening is I navigate to https://localhost:44353/Employees/Create?Length=20 .

What am I doing wrong?

EmployeeSelect.cshtml

@model IEnumerable<HR_App_V1.Models.Employee>

@{
    ViewBag.Title = "Employee Select";
}

<h2>EmployeeSelect</h2>

<table class="table">
    <tr>
        <th>
            @Html.DisplayNameFor(model => model.First_Name)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Last_Name)
        </th>
        <th></th>
    </tr>

    @foreach (var item in Model)
    {
        <tr>
            <td>
                @Html.DisplayFor(modelItem => item.First_Name)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Last_Name)
            </td>
            <td>
                @Html.ActionLink("Select", "Create", new { id = item.ID }) 
            </td>
        </tr>
    }

</table>



Workers_Compensation

 public ActionResult Create(int? id)
        {

            if (id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }
            Employee employee = db.Employees.Find(id);
            if (employee == null)
            {
                return HttpNotFound();
            }
            System.Diagnostics.Debug.WriteLine("Employee name: " + employee.First_Name);
            ViewBag.Claim_Ruling_TypeID = new SelectList(db.Claim_Ruling_Type, "ID", "Claim_Ruling_Type1");
            ViewBag.EmployeeID = new SelectList(db.Employees, "ID", "ID");
            ViewBag.fName = new SelectList(db.Employees, "First_Name", "First_Name");
            ViewBag.lName = new SelectList(db.Employees, "Last_Name", "Last_Name");
            ViewBag.WC_TypeID = new SelectList(db.WC_Type, "ID", "WC_Type1");
            return View();
        }

If I manually navigate to https://localhost:44353/Workers_Compensation/Create/{ID} then everything works perfectly. But if I try to use the Select button it does not.

3
  • Can you show the whole view pls? Commented Apr 14, 2021 at 17:34
  • I edited the question to show the whole view. Commented Apr 14, 2021 at 17:43
  • And I am sorry but i need your endpoints mappings from startup or webconfig, pls. Commented Apr 14, 2021 at 17:45

1 Answer 1

1

If you changing a controller, you have to select htmlaction overload with 5 parameters. There is no a 4 input parameters htmlaction with a controller

Replace

 @Html.ActionLink("Select", "Create", new { id = item.ID }) 

with

 @Html.ActionLink("Select", "Create", "Workers_Compensation", new {id= item.ID }, null) 
Sign up to request clarification or add additional context in comments.

1 Comment

Oh wow, I see that most people used the null but I thought that was optional or something. Than you!

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.