Похоже, что одна или две вещи могут быть неправильными.
1) Вы действительно используете корректную перегрузку Html.ActionLink?
Вы используете перегрузку, которая ожидает Html.ActionLink ([текст ссылки], [действие], [контроллер], [значения маршрута] , [htmlAttributes]) и все, что вы дали значения маршрута - это строка. Это должен быть RouteValueDictionary или анонимный объект, а не просто строка. Попробуйте это ниже, это работает так, как вы ожидаете?
@Html.ActionLink(@orderNumber.ToString().Trim(), "SearchResult", "OrderStatus", new{ id = @orderNumber.ToString() }, new { target = "_self" })
Полагаю, вы хотите, чтобы он генерировал URL, например /OrderStatus/SearchResult/999
, где 999 - это любой номер заказа, который у вас есть. Это правильно?
2) Ваш SearchResult ActionResult принимает только POST. Нажав на гиперссылку, созданную ActionLink, вы получите GET. Поскольку у вас нет контроллера / действия с этими именами, которые принимают GET, ожидаемый результат - 404.
Если ссылка, которую генерирует ваш ActionLink, указывает на /OrderStatus/SearchResult[/order number]
, то соответствующий метод действия должен выглядеть следующим образом (при условии конфигурации маршрутизации по умолчанию):
public ActionResult SearchResult(string orderNumber) { ... }
Вы можете добавить его к атрибуту [HttpGet]
, если хотите, чтобы это действие только разрешало GET, но это не обязательно.