Как передать параметр в контроллер из представления cshtml в mvc - PullRequest
1 голос
/ 26 сентября 2019

net MVC 4 Я следовал инструкциям Microsoft о том, как передать параметр в контроллер из представления cshtml в mvc, и получаю сообщение об ошибке, в котором говорится, что ресурс не может быть найден. Если я поставил точку останова в cshtml Iна самом деле может видеть значение Id, но он вообще не попадает в контроллер. Кажется, он не может его найти

Описание: HTTP 404. Ресурс, который вы ищете (или одна из его зависимостей)могло быть удалено, изменилось его имя или временно недоступно.Пожалуйста, просмотрите следующий URL и убедитесь, что он написан правильно.

Запрошенный URL: / UploadLogs / DisplayUploadedFileContents / 89

Это мой метод управления

public class DisplayUploadedFileController : Controller
{
    private MarketingDBEntitiesModel db = new MarketingDBEntitiesModel();
    // GET: DisplayUploadedFile
    public ActionResult DisplayUploadedFileContents(int UploadId)
    {
        return View(db.marketingdbclients_dataTable.OrderByDescending(r => r.ClientId).Where(r => r.ClientDataId < 1000).ToList());
       // return View();.
    }
}

Моя строка в cshtml

<td>    
    @*@Html.ActionLink("Details", "Details", new { id = item.UploadId })*@

    @Html.ActionLink("Details", "DisplayUploadedFileContents", new { id = item.UploadId })    
</td>

Мой маршрут конфигурации

 routes.MapRoute(
      name: "DisplayUploadedFileContents",
      //url: "",
      url: "{controller}/{action}/{id}",
      defaults: new { controller = "DisplayUploadedFile", action = "DisplayUploadedFileContents", id = UrlParameter.Optional });

Ответы [ 3 ]

0 голосов
/ 26 сентября 2019
@Html.ActionLink("DisplayUploadedFile", "DisplayUploadedFileContents", new { UploadId = item.UploadId}, null )

Вам нужен аргумент для "htmlArgument"

Пожалуйста, обратитесь к: HTML.ActionLink метод

0 голосов
/ 26 сентября 2019

После внесения нескольких изменений это должно получиться.

Во-первых, если вы хотите использовать маршрутизацию для URL-адреса, подобного этому {controller}/{action}/{id}, измените имя параметра в действии контроллера с UploadId наid:

public ActionResult DisplayUploadedFileContents(int id)

Далее, похоже, что вы связываетесь с другого контроллера, поскольку при ошибке запрашивается URL-адрес /UploadLogs/DisplayUploadedFileContents/89 (примечание UploadLogs не DisplayUploadedFile).

При подключении к контроллеру DisplayUploadedFile из представления, принадлежащего другому контроллеру, вам нужно будет использовать эту перегрузку, принимая 5 параметров:

@Html.ActionLink("Display File Contents", "DisplayUploadedFileContents", "DisplayUploadedFile", 
                     null, new { id = item.UploadId })

Однако, если вы обращаетесь кконтроллер из вида в том же контроллере, вы должны иметь возможность использовать эту перегрузку для ActionLink, принимая 3 параметра:

@Html.ActionLink("Display File Contents", "DisplayUploadedFileContents", new { id = item.UploadId })

Пожалуйста, обратитесь к документации ActionLink

0 голосов
/ 26 сентября 2019
url: "{controller}/{action}/{id}

Вы не уважали конфигурацию маршрутизации.Попробуйте:

@Html.ActionLink("DisplayUploadedFile", "DisplayUploadedFileContents", new { UploadId = item.UploadId })
...