Нечто подобное должно начать вас. Добавьте класс к элементам, из которых вам нужно получить информацию. Тогда вместо использования 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>
Я думаю, что это очень зависит от того, как Ваше приложение обрабатывает (требует обработать), пользовательские языки. Если Ваши пользователи должны войти в систему Вашего сайта, то у Вас, вероятно, есть страница настроек учетной записи где-нибудь с соответствующим объектом профиля пользователя или чем-то подобным позади. В таком случае я предполагаю, что Вы сохранили бы эти настройки на DB, и когда пользователь возвращается к Вашему сайту, Вы получаете пользовательскую информацию так или иначе (т.е. от cookie), Вы загружаете свой объект профиля пользователя из DB. Информация хранилась бы на сессии, так как я думаю, что это больше всего подошло бы в этом случае. Если Ваши пользователи не должны входить в систему, таким образом, Вы в основном не можете непосредственно определить их, я сохранил бы настройки языка в cookie. Это дает Вашему пользователю значение, что он будет всегда находить сайт на своем предпочтительном языке, когда он возвратится позже (учитывая, что он не удаляет cookie, и время жизни cookie достаточно долго). Как третья возможность Вы могли просто определить пользовательский язык согласно его настройкам браузера по умолчанию (так же, как "regex" упомянутый выше).
Как я сказал, это действительно зависит от потребностей Вашего приложения. Что необходимо иметь в виду, хотя это
До свидания
Существует свойство, которое передается, когда браузер выполняет запрос, который Вы могли использовать. На это свойство ссылаются в Вашем коде позади путем ссылки:
Request.UserLanguages // returns an array
С другой стороны, Вы могли предложить пользователю указывать предпочтенный язык и сохранять его в cookie.
В Вашем Page. Обработчик загрузок поместил что-то как следующее:
string prefLan;
if(Request.Cookies["preferedLanguage"] != null)
prefLan = Server.HtmlEncode(Request.Cookies["preferedLanguage"].Value);
Querystring не является правильным местом для этого, если он не читается первоначально из querystring и хранится где-то в другом месте.
Сохраните его в cookie, или если cookie выключены, хранят его на сессии или состоянии отображения.
Ответ Kevin "свойства профиля" является простым способом позволить установленной библиотеке сделать тяжелый подъем для Вас с минимальным усилием с Вашей стороны.
Свойства профиля были созданы конкретно, чтобы позволить Вам хранить определенные для пользователя предпочтения. Это было бы хорошим местом для хранения этого вида данных.
Селектор хаос дает должен работать:
$('.foo:not(.baz .foo),.bar:not(.baz .bar)')
Просто хотел дать Подсказка о расширении FireBug под названием FireFinder , которое можно использовать для тестирования селекторов css / jquery.
С веб-сайта: Firefinder - это расширение для Firebug (в Firefox) и предлагает функции быстрого поиска элементов HTML, соответствующих выбранному селектору (-ам) CSS или выражению XPath. Это позволяет вам мгновенно тестировать селекторы CSS на странице, одновременно просматривая содержимое, и соответствующие элементы будут выделены.
Другое соображение, не упомянутое ни в одном из других ответов, - это дружелюбие к поисковым системам. Если вы используете разные url для каждого языка, например
http://{en|cy}.example.com/subdir/ or http://example.com/{en|cy}/subdir)тогда поисковые системы могут индексировать ваш сайт на нескольких языках.