Передача значений в контроллер - PullRequest
0 голосов
/ 20 мая 2018

В моем контроллере у меня есть IActionResult, который принимает 3 строки

public IActionResult DeviceDetails(string idDetails, string begindate, string enddate)
{....}

Мне нравится вставлять эти строки с веб-страницы, где пользователь может выбрать дату начала и окончания из DatePicker, поэтому у меня есть:

<input id="begindate" type="date" class="btn btn-default"/>
<input id="enddate" type="date" class="btn btn-default" />
<button type="submit" value="show data" class="btn btn-default">@Html.ActionLink("Show data", "DeviceDetails", new { idDetails = ViewBag.DeviceName, begindate ="begindate", enddate = "enddate" }) </button>

Как я могу передать значения из id="begindate" и id="enddate" в Html.ActionLink (idDetails работает нормально)?
Или как я могу передать эти две строки в контроллер по-другому?

Ответы [ 2 ]

0 голосов
/ 21 мая 2018

Вы можете сгенерировать ActionLink, используя временные значения местозаполнителя внутри routeValues и поместить идентификатор в элемент привязки:

<button type="submit" value="show data" class="btn btn-default">@Html.ActionLink("Show data", "DeviceDetails", new { idDetails = ViewBag.DeviceName, begindate = "xxxx", enddate = "yyyy" }, new { id = "showdata" })</button>

Затем используйте простой JS / jQuery для обработки click события на стороне клиентакоторый заменяет временные значения местозаполнителя на реальные значения из ввода даты (ниже используется jQuery):

$('#showdata').click(function(e) {
    var beginDate = $('#begindate').val();
    var endDate = $('#enddate').val();
    var tempValue = $(this).prop('href');
    var realValue = tempValue.replace("xxxx", beginDate)
                             .replace("yyyy", endDate);
    location.href = realValue; // redirect
    return false; // cancel default redirect
});

В качестве примечания лучше использовать строго типизированную модель представления и передавать входные значения в метод действия контроллера, используя viewmodelсвойства, а не создание большого количества строк запроса.

Пример в реальном времени: DotNET Fiddle

0 голосов
/ 20 мая 2018

Попробуйте:

ActionLink (по умолчанию):

@Html.ActionLink("YourAction", "YourController", new { id = item.ID }) 

ActionLink (с помощью кнопки):

<button onclick="location.href='@Url.Action("YourAction", "YourController",
    new { Model.ProductID })';return false;">Details</button>

или

<input type="button" title="Details" value="Details" onclick="location.href=
    '@Url.Action("YourAction", "YourController", new { id = item.ID })'" />

Надеюсь, это поможет ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...