Выбираемые графические «кнопки» с ASP.NET MVC

#jquery #asp.net-mvc-2 #jquery-plugins

#jquery #asp.net-mvc-2 #jquery-плагины

Вопрос:

Я пытаюсь создать страницу, содержащую форму с одним полем, представленным списком изображений. Пользователь выберет одно из изображений, введет некоторую дополнительную информацию и нажмет кнопку, чтобы отправить данные обратно на сервер.

Я смог сгенерировать список, используя оператор for-each с элементами div, обеспечивающими правильный макет и поток. Я рассмотрел возможность использования плагина jQuery Selectable для управления выбором из списка, выделения выбранного элемента и т.д., Но застрял на том, как я отправляю выбранную информацию обратно на сервер.

Во-первых, мне нужен способ встроить идентификатор для каждого элемента в html. Затем мне нужно отправить значение выбранного элемента на сервер при отправке формы.

Я на правильном пути или двигаюсь в неправильном направлении? Как я могу заставить это работать?

Ответ №1:

Не уверен, что это лучший способ сделать это, но после долгих часов спотыкания вот что я придумал:

 <style type="text/css">
    .ui-selected
    {
        background-color:Yellow;
    }
</style>

<script type="text/javascript">
    $(function () {
        $("#buttons").selectable(
        {
            filter: "div",
            selected: function (e, ui) {
                var value = $(ui.selected).children("input").first().val();

                $("#SelectedValue").val(value);
            }
        });
    });
</script>

<% using (Html.BeginForm())
   { %>
    <%= Html.Hidden("SelectedValue") %>
<% } %>

<div id="buttons">
    <% foreach (var item in Model.Items)
       { %>
        <div class="image_button_large"
             style="float:left;"
             title="<%= Html.Encode(item.Name) %>"
             >
            <div class="button_image">amp;nbsp;</div>
            <%= Html.Encode(item.Name) %>
            <%= Html.Hidden("itemId", item.ID) %>
        </div>
    <% } %>
</div>
  

Ответ №2:

Я пока не могу проголосовать за : ( — но ты мой герой. Отличное решение.

Если это кому-нибудь поможет, внесите одну небольшую правку.

Добавление:

 cancel: "a"
  

кроме того, фильтр позволит ссылкам в выбираемых элементах продолжать работать