Хранение Языка в URL или Сессии или другом

Нечто подобное должно начать вас. Добавьте класс к элементам, из которых вам нужно получить информацию. Тогда вместо использования actionlink просто создайте обычный элемент с уникальным классом. Пусть JQuery обрабатывает события щелчка по этим ссылкам и передает другие элементы TD той же строки контроллеру с помощью вызова AJAX.

$(".button").click( function() {
	var tr = $(this).closest("tr");
  var ProductCodeScheme = tr.find(".ProductCodeScheme").html();
  var SerialNumber = tr.find(".SerialNumber").html();
  var Batch = tr.find(".Batch").html();
  var ExpirationDate = tr.find(".ExpirationDate").html();
  var ProductCode = tr.find(".ProductCode").html();
  
  $.ajax({
    url: "/Verify Pack/VerifyPack", 
    type: "POST",      
    data: ({
    	ProductCodeScheme: ProductCodeScheme,
      SerialNumber: SerialNumber,
      Batch: Batch,
      ExpirationDate: ExpirationDate,
      ProductCode: ProductCode
    }),     
    cache: false,
    success: function(data){                          
      //Do something here for a successful POST                   
    }           
  });    
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table id="data-table" class="table display responsive" style="width:100%">
   <thead class="thead-colored thead-light">
      <tr>
         <th>Time</th>
         <th>Scheme</th>
         <th>Serial Number</th>
         <th>Batch</th>
         <th>Exp Date</th>
         <th>Product Code</th>
         <th>Http Code</th>
         <th>Is Confirmed?</th>
         <th>Confirmation Date</th>
         <th>Verify Pack</th>
      </tr>
   </thead>
   <tbody>
      <tr>
         <td>Timestamp 1</td>
         <td class="ProductCodeScheme">ProductCodeScheme 1</td>
         <td class="SerialNumber">SerialNumber 1</td>
         <td class="Batch">Batch 1</td>
         <td class="ExpirationDate">ExpirationDate 1</td>
         <td class="ProductCode">ProductCode 1</td>
         <td>HttpResponseCode 1</td>
         <td>ConfirmedParsed 1</td>
         <td>ConfirmedDate 1</td>
         <td class="text-secondary"><a href="#!" class="button">Item 1</a></td>
      </tr>
     <tr>
         <td>Timestamp 2</td>
         <td class="ProductCodeScheme">ProductCodeScheme 2</td>
         <td class="SerialNumber">SerialNumber 2</td>
         <td class="Batch">Batch 2</td>
         <td class="ExpirationDate">ExpirationDate2</td>
         <td class="ProductCode">ProductCode 2</td>
         <td>HttpResponseCode 2</td>
         <td>ConfirmedParsed 2</td>
         <td>ConfirmedDate 2</td>
         <td class="text-secondary"><a href="#!" class="button">Item 2</a></td>
      </tr>
   </tbody>
</table>

9
задан Chris Ballance 8 February 2009 в 05:34
поделиться

6 ответов

Я думаю, что это очень зависит от того, как Ваше приложение обрабатывает (требует обработать), пользовательские языки. Если Ваши пользователи должны войти в систему Вашего сайта, то у Вас, вероятно, есть страница настроек учетной записи где-нибудь с соответствующим объектом профиля пользователя или чем-то подобным позади. В таком случае я предполагаю, что Вы сохранили бы эти настройки на DB, и когда пользователь возвращается к Вашему сайту, Вы получаете пользовательскую информацию так или иначе (т.е. от cookie), Вы загружаете свой объект профиля пользователя из DB. Информация хранилась бы на сессии, так как я думаю, что это больше всего подошло бы в этом случае. Если Ваши пользователи не должны входить в систему, таким образом, Вы в основном не можете непосредственно определить их, я сохранил бы настройки языка в cookie. Это дает Вашему пользователю значение, что он будет всегда находить сайт на своем предпочтительном языке, когда он возвратится позже (учитывая, что он не удаляет cookie, и время жизни cookie достаточно долго). Как третья возможность Вы могли просто определить пользовательский язык согласно его настройкам браузера по умолчанию (так же, как "regex" упомянутый выше).

Как я сказал, это действительно зависит от потребностей Вашего приложения. Что необходимо иметь в виду, хотя это

  • объекты, хранившие на сессии, сохранены на серверной стороне, с помощью памяти сервера. Не сохраняйте бесполезные вещи там в памяти, если Вам не нужны они. Однако объект сессии подходит для того, чтобы хранить данные, связанные с визитом и конфигурациями пользователя.
  • Данные, хранившие в cookie или объекте Состояния отображения, отправляют назад и вперед между клиентским браузером и веб-сервером. Таким образом, это вызывает дополнительный трафик и может уменьшить производительность.

До свидания

2
ответ дан 4 December 2019 в 15:27
поделиться

Существует свойство, которое передается, когда браузер выполняет запрос, который Вы могли использовать. На это свойство ссылаются в Вашем коде позади путем ссылки:

Request.UserLanguages // returns an array

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

В Вашем Page. Обработчик загрузок поместил что-то как следующее:

string prefLan;    
if(Request.Cookies["preferedLanguage"] != null)
        prefLan = Server.HtmlEncode(Request.Cookies["preferedLanguage"].Value);
1
ответ дан 4 December 2019 в 15:27
поделиться

Querystring не является правильным местом для этого, если он не читается первоначально из querystring и хранится где-то в другом месте.

Сохраните его в cookie, или если cookie выключены, хранят его на сессии или состоянии отображения.

Ответ Kevin "свойства профиля" является простым способом позволить установленной библиотеке сделать тяжелый подъем для Вас с минимальным усилием с Вашей стороны.

0
ответ дан 4 December 2019 в 15:27
поделиться

Свойства профиля были созданы конкретно, чтобы позволить Вам хранить определенные для пользователя предпочтения. Это было бы хорошим местом для хранения этого вида данных.

1
ответ дан 4 December 2019 в 15:27
поделиться

Селектор хаос дает должен работать:

$('.foo:not(.baz .foo),.bar:not(.baz .bar)')

Просто хотел дать Подсказка о расширении FireBug под названием FireFinder , которое можно использовать для тестирования селекторов css / jquery.

С веб-сайта: Firefinder - это расширение для Firebug (в Firefox) и предлагает функции быстрого поиска элементов HTML, соответствующих выбранному селектору (-ам) CSS или выражению XPath. Это позволяет вам мгновенно тестировать селекторы CSS на странице, одновременно просматривая содержимое, и соответствующие элементы будут выделены.

2
ответ дан 4 December 2019 в 15:27
поделиться

Другое соображение, не упомянутое ни в одном из других ответов, - это дружелюбие к поисковым системам. Если вы используете разные url для каждого языка, например

http://{en|cy}.example.com/subdir/ or http://example.com/{en|cy}/subdir) 
тогда поисковые системы могут индексировать ваш сайт на нескольких языках.
7
ответ дан 4 December 2019 в 15:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: