none
ASP.NET MVC 3 и передача параметров через HTML.ActionLink RRS feed

  • Вопрос

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

    Структура в БД  Request для хранения заявок             ID       IDRequest     Message

    Структура в БД MessageRequest для хранения комментариев следующая               ID   IdRequest   UserMessage    AdminAnswer   Date

    IdRequest в таблице MessageRequest  соответствует IdRequest  в таблице Request 

    и записи формируются следующим образом

    Request 

    ID    IdRequest     Message

    1           1              ляля

    2           2             лялял

    3           3             ляя

    MessageRequest  

    ID      IdRequest     UserMessage     AdminMessage      Date

    1         1                  ляляля                NUll                 000

    2         1                   Null                лялялл                000

    3         2                 лялллял               Null                 000

    4         1                    ля                     Null                 000

    5         3              ля ля                     Null

    для просмотра сообщений делаю гиперссылку с ID=IdRequest в БД  Html.ActionLink("Комментарий", "Message", "RequestMessage", new { id = val.ID }, null)

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

    Вывожу сообщения так:

    Запрос к БД выборка по IdRequest всех сообщений и далее их вывод

    @foreach (var item in obj)
    {
          <tr>
              <td style="padding-left: 10px">Дата сообщения : @item.Date 
               </td>
          </tr>
          <tr>
               <td>
               <ul class="gQuestion"><p> @item.UserMessage</p>
          @if (item.AdminMessage != null)
               {
                <li class="gAnswer"><p>Администратор: @item.AdminMessage</p>
                </li>
               }
               </ul>
              </td>
           </tr>
    }
    

    25 января 2013 г. 10:23

Ответы

  • Сделать это несложно. Но у Вас на данный момент этот механизм отсутствует, насколько я понял. Вам нужно привязать определённые сообщения определённым пользователям, а потом при запросе проверять. Это сообщение принадлежит данному пользователю или нет. И ещё реализован ли у Вас какой либо механизм аутентификации и авторизации? Если нет, то можете воспользоваться стандартным поставщиком членства (Membership API).
    • Предложено в качестве ответа YatajgaEditor 29 января 2013 г. 9:52
    • Помечено в качестве ответа Abolmasov DmitryModerator 29 января 2013 г. 13:50
    25 января 2013 г. 11:12
    Модератор

Все ответы

  • Сделать это несложно. Но у Вас на данный момент этот механизм отсутствует, насколько я понял. Вам нужно привязать определённые сообщения определённым пользователям, а потом при запросе проверять. Это сообщение принадлежит данному пользователю или нет. И ещё реализован ли у Вас какой либо механизм аутентификации и авторизации? Если нет, то можете воспользоваться стандартным поставщиком членства (Membership API).
    • Предложено в качестве ответа YatajgaEditor 29 января 2013 г. 9:52
    • Помечено в качестве ответа Abolmasov DmitryModerator 29 января 2013 г. 13:50
    25 января 2013 г. 11:12
    Модератор
  • Реализован стандартный метод аутентификации и авторизации. Как привязать сообщения к пользователям?
    25 января 2013 г. 11:37
  • Нужно связать таблицу сообщений с таблицей пользователей. Т.е. в таблице сообщений создать внешний ключ, с полем ИД пользователя.
    25 января 2013 г. 12:01
    Модератор
  • Создал внешний ключ в таблице сообщений с ID пользователя из таблицы Users
    25 января 2013 г. 12:45
  • Теперь Вам при каждом запросе сообщения, надо проверять принадлежит ли оно пользователю который его запрашивает, если нет нужно запрос отклонять или выдавать предупреждение или ещё, что то.
    25 января 2013 г. 12:49
    Модератор
  • Это не выход, или возможно я не понимаю до конца сути. Если я сделаю привязку проверки к ID  пользователя то получается следующая ситуация, пользователь оставил сообщение , все прекрасно добавляется в БД  с ID пользователя. Теперь админ отвечает на это сообщение добавляется следующая запись в БД с тем же ID заявки только теперь записывается сообщение админа и его ID соответственно, если я буду делать проверку при выводе сообщений по ID пользователя то условие отбора не будет выполняться на сообщения от админа и они не будут выводиться.
    25 января 2013 г. 18:33
  • Значит ещё нужно привязать сообщения друг к другу путём путём возвратных отношений. Т.е. когда админ отвечает на сообщении, в поле этой таблицы должен быть внешний ключ, который укакзывает, кроме ИД пользователя, ещё на ИД того сообщения, на которое оно отвечает.
    26 января 2013 г. 7:23
    Модератор