Много кнопок на странице, необходимо отправить уникальные данные поста с каждым - PullRequest
0 голосов
/ 30 марта 2012

Я перечисляю кучу автомобилей с кнопкой рядом с ними, которую при нажатии нужно будет выполнить GET, но она также отправляет модель этого элемента. Имя:

.
@using (Html.BeginForm("GetCarUrl", "Car", FormMethod.Get, new { model = Model }))
{
    if(Model.Cars != null && Model.Cars.Count > 0)
    {       
        foreach (CarContent car in Model.Cars)
        {
            <p>@car.Name</p>
        }

            <input type="button" value="Get Car Url" class="submit" />
    }

Итак, страница отображает кучу гиперссылок и кнопок:

[hyperlink1] [submit]
[hyperlink2] [submit]
[hyperlink3] [submit]
[hyperlink4] [submit]
[hyperlink5] [submit]
...

Когда пользователь нажимает на любую из отправляемых, мне нужно передать обратно соответствующий ей @ car.CarType для этой конкретной гиперссылки

Не уверен, как это сделать. Мой метод действия ожидает @ car.CarType для этой конкретной гиперссылки автомобиля, которая будет отправлена ​​на него

UPDATE

Вот моя разметка:

    Html.Hidden("userId", Model.UserId);
    Html.Hidden("lessonId", Model.LessonId);

@if(....)
{
    foreach (Car car in Model.Cars)
    {
        using (Html.BeginForm("GetFileDownloadUrl", "Car", FormMethod.Get, new {  carFileUrl= car.CarFileUrl}))
        {
                <p><a href="/Car/@Model.CarId/@Model.UserId/Url">@fileContent.Name</a>
                    <input  type="submit" value="download" name="downloadFile"/>
                </p>
        }
    }
}

А вот метод действия, который нужно нажать, для отправки в userId, CarId и carFileUrl:

[HttpGet]
public string GetFileDownloadUrl(string carFileUrl, int carId, int userId)
{
    string downloadUrl = string.Empty;
    downloadUrl =GetDownloadUrl(carId, carFileUrl, userId);

    return downloadUrl;
}

Вот мой маршрут:

context.MapRoute("CarFileDownload", "Car/{carId}/{userId}/{carFileUrl}", new { controller = "Content", action = "GetFileDownloadUrl", carFileUrl= UrlParameter.Optional, carId = UrlParameter.Optional, userId = UrlParameter.Optional });

Когда я нажимаю кнопку, она не отправляется обратно в мой метод действия GetDownloadUrl.

Я не знаю, правильно ли у меня настроен маршрут с точки зрения того, нужно ли мне устанавливать все эти необязательные параметры, а затем в моем BeginForm нужно указывать все их снова или нет, так как у меня есть некоторые из них как скрытые поля отправляются обратно? Не уверен, почему в этом случае он не затрагивает мой метод действия GetFileDownloadUrl ...

Ответы [ 2 ]

0 голосов
/ 30 марта 2012

ничто не мешает вам создавать множество форм на одной странице.

if(Model.Cars != null && Model.Cars.Count > 0)
{       
    foreach (CarContent car in Model.Cars)
    {
        <div>
        @using (Html.BeginForm("GetCarUrl", "Car", FormMethod.Get, new { model = car }))
        {
            <p>@car.Name</p>
             @Html.Hidden("CarId", car.Id)
             <input type="submit" value="Get Car Url" class="submit" />
        }
        </div>
    } 
}

обратите внимание, что каждая форма model = car

0 голосов
/ 30 марта 2012

Создайте скрытое поле для типа автомобиля и используйте JQuery или подобное, чтобы событие щелчка гиперссылки установило скрытое поле типа автомобиля.

Используя концепцию «прогрессивного улучшения», вы можете заставить васстраница по-прежнему функционирует для тех пользователей, у которых может не быть включен javascript - просто сделайте ссылки на самом деле получить и сделать кнопку скрытой.Затем, используя JQuery, переопределите поведение ссылки по умолчанию (как описано выше) и сделайте кнопку видимой.Таким образом вы получите желаемое поведение, но ваша страница все равно будет работать для тех, у кого нет JavaScript.

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