Как я могу переключить список, основанный на переключателе с asp.net mvc? - PullRequest
0 голосов
/ 22 января 2009

Предположим, у меня есть список билетов. Когда пользователь впервые заходит на страницу тикетов / индекса, я хочу показать все открытые тикеты и отметить переключатель с именем ticketStatus и значением Open.

Если пользователь проверяет переключатель «Закрыто» со значением «Закрыто» и именем ticketStatus, я хочу сделать отправку и получить список закрытых билетов, вернуться на страницу «Мои билеты / индекс» и проверить переключатель «Закрыто».

Любое предложение о том, с чего начать, будет оценено? Могу ли я использовать javascript для отправки, чтобы мне не нужна форма, или я должен просто сделать форму?

По виду:

<%= Html.RadioButton("ticketStatus", "Open", true) %>&nbsp;Open&nbsp;&nbsp;  
<%= Html.RadioButton("ticketStatus", "Closed", false) %>&nbsp;Closed (Last 60 Days)  

В контроллере:

public ActionResult Index()  
{  
    ViewData["Title"] = "Ticket List";  
    IServiceCallService scService = new ServiceCallService();  
    IList<ServiceCall> serviceCalls = scService.GetOpenServiceCalls("");  
    return View(serviceCalls);  
}  

Ответы [ 2 ]

0 голосов
/ 23 января 2009

Так что я сделал небольшое изменение, чтобы оно заработало. Не уверен, что это самое элегантное решение.

<script type="text/javascript">
    $(document).ready(function() {
        $("input[name='ticketStatus']").bind("click", radioClicks)
    });

    function radioClicks() {
        window.location = "/Tickets/" + $(this).val();
    }
</script>

Спасибо.

0 голосов
/ 22 января 2009

Я отвечу, следуя потоку моего понимания:

Предположим, у меня есть список билетов. Когда пользователь впервые заходит на страницу тикетов / индекса, я хочу показать все открытые тикеты и установить переключатель с именем ticketStatus и значением Open.

<div class="statusfilter">
<%foreach(TicketStatus status in view.PickableTicketStatus){%>
<input 
   type="radio" 
   name="ticketStatusFilter"
   value="<%=status%>"
   <%= viewlogic.IsSelectedStatusFilter(status) ? "selected='selected'" : "" %>
/>
<%}>
</div>
<ul class="tickets">
<%foreach(var t in view.Tickets){%>
  <li>
    <input type="hidden" name="ticketsToChange" value="<%=t.Key%>" /> 
    <%=t.Title.AsHtmlEncoded()%>
  </li>
<%}%>
</ul>

Если пользователь проверяет переключатель «Закрыто» со значением «Закрыто» и именем ticketStatus, я хочу сделать отправку и получить список закрытых билетов, вернуться на страницу «Мои билеты / индекс» и проверить переключатель «Закрыто».

1: вам нужно обработать событие изменения на всех входах type = "radio"

<!-- with jquery -->
$(document).ready(function(){
  // register anonymous event handler to status radio change
  $('div.statusfilter input[type='radio']")
    .change(function(){
      // see 2:
    });
});

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

  • запрос ajax и получение ответа
  • обычное обновление http

некоторые рекомендации:

если это ваша основная форма: используйте a и используйте ajax для других частей пользовательского интерфейса (окно поиска, навигация ...)

Подумайте, почему вы публикуете данные (ajax или plain), если вам нужно только отобразить билеты и переключиться с некоторым контролем, предпочтите одно из этих решений:

  • используйте обычный href и получите параметры URL
  • использовать частичное обновление списка заявок

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

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

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

редактировать:

  • просто упомяну, что этот вопрос будет не принадлежать asp.net mvc, это общий сценарий html / http / form
  • также не навязывайте ajax вашему клиенту, верхняя часть навигации должна обрабатываться с помощью get / post на начальном уровне, затем добавляется неинтрузивный ajax для навигации
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...