Ответ 1
$('input,select').attr('disabled','<%=Session["CoBrowse"].ToString() %>');
Я хочу получить доступ к значению сеанса в jquery-методе на странице просмотра ASP.NET MVC. См. Ниже код,
$('input[type=text],select,input[type=checkbox],input[type=radio]').attr('disabled', '<%= Session["CoBrowse"].ToString() %>');
Как я могу получить значение Session в jquery.
$('input,select').attr('disabled','<%=Session["CoBrowse"].ToString() %>');
Не уверен, что это лучший маршрут, но на вашей странице aspx вы можете создать метод, который возвращает значение вашей переменной сеанса, например
Серверная сторона:
using System.Web.Services;
[WebMethod(EnableSession = true)]
public static string GetSession()
{
return Session["CoBrowse"].ToString();
}
затем вызовите эту клиентскую сторону метода с помощью jQuery:
$.ajax({
type: "POST",
url: "./Default.aspx/GetSession",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(result){
('input[type=text],select,input[type=checkbox],input[type=radio]').attr('disabled', result.d);
}
});
Много комментариев:
:checkbox
, :text
и т.д.true
или false
в нужном месте.<input type="checkbox" disabled="false" />
также отключен, поэтому ваши элементы управления всегда отключены.Если вы так или иначе выбираете, подумайте:
var isCoBrowse = <%= Session["Name"].ToString().ToLower() %>;
if(!isCoBrowse) //disable controls
$(":text,:checkbox,:radio").attr("disabled","disabled"); //standard.
Это создаст клиентский код JavaScript:
var isCoBrowse = true;
И, чтобы включить элемент:
$("input").removeAttr("disabled");
Кроме того, есть намного лучшие способы для этого. Рассматривали ли вы возможность отключить элементы управления на стороне сервера, если это возможно?
<input id="sessionInput" type="hidden" value='<%= Session["name"] %>' />
var getSessionValue = $('#sessionInput').val();
Если эта переменная сеанса - это конфиденциальные данные (что в данном случае это, вероятно, не так), я бы не использовал это решение, поскольку оно отображало бы данные сеанса при просмотре источника javascript. Если это конфиденциальные данные сеанса, доступ к нему через веб-метод (см. Выше ответ), вероятно, лучше всего.
Легко! когда вы знаете, как:
@Html.Encode(Session ( "classificationTitle" ))... и в файле .js:
var classificationTitle = document.getElementById('classificationTitle').innerHTML;
извините - я не могу опубликовать полный html, поскольку этот сайт вырезает угловые скобки: (