#javascript #jquery #asp.net
#javascript #jquery #asp.net
Вопрос:
У меня есть 2 выпадающих списка, ddlYear и ddlMonth. В обоих выпадающих списках значения загружены в ASP.Net C # во время загрузки страницы. (Год — это финансовый год, который начинается с июля по июнь. Для 2014-2015 годов мне нужно показать только июль. для 2013-2014 годов список месяцев с июля по июнь) При изменении года я загружаю месяцы с помощью jquery на стороне клиента.
$('#ddlMonth').empty();
$.each(data, function (index2, val) {
$('#ddlMonth').append($('<option></option>').val(val.Key).html(val.Value));
});
Если я обращаюсь к выбранному значению с помощью jquery $ («#ddlMonth»).val(), оно отображается правильно. Однако, если я выбираю значение из ASP.Net C # ddlMonth.Выбранное значение выдает неправильное значение / начальное значение по умолчанию.
Вот мой код на c #
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
ddlFiscalYear.Items.Add(new ListItem(fiscalYearStart.ToString() "-" (fiscalYearStart 1).ToString(), fiscalYearStart.ToString()));
ddlFiscalYear.SelectedValue = fiscalYearStart.ToString();
var months = GetMonthsForFiscalYear(fiscalYearStart);
foreach (DateTime month in months)
{
if (month < DateTime.Now)
{
ddlMonth.Items.Add(new ListItem(month.ToString("MMMM"), month.Month.ToString()));
}
}
string defaultMonth = DateTime.Today.Month.ToString();
ddlMonth.SelectedValue = defaultMonth;
}
}
protected void btnSave_Click(object sender, EventArgs e)
{
Month = Int32.Parse(ddlMonth.SelectedValue);
}
Я не могу понять, в чем здесь ошибка…
Комментарии:
1.
I am not able to figure out what is the mistake here.
Мы также не можем без вашего asp.net код. Покажите загрузку вашей страницы, а также покажите, откуда вы получаете доступ к ddlMonth. Выбранное значение.2. Добавлен asp.net код
3. @rkatta поделитесь своим
.aspx
кодом, это может помочь …!!
Ответ №1:
Я думаю, что ваш лучший вариант — использовать скрытое поле на стороне клиента для сохранения выбранного элемента из выпадающего списка. Существует разрыв между данными на стороне клиента и данными на стороне сервера.
Используйте jQuery для заполнения этого поля при выборе нового месяца
<input id="hdnSelectedMonth" type="hidden" runat="server">
и в вашем коде позади вы можете ссылаться на это:
Month = Int32.Parse(hdnSelectedMonth.Value);
Комментарии:
1. Да, моя следующая мысль была такой. Спасибо!
2. Спасибо Рику. Я пометил это как ответ. Но я все еще ищу, может ли кто-нибудь помочь мне понять причины этого. Может быть, мне не хватает некоторых основ, и я хотел бы знать.
Ответ №2:
Это действительно плохая идея изменять содержимое элемента управления на стороне сервера с помощью jquery. Данные в элементе управления на стороне сервера также хранятся в ViewState, и jquery не может их обновить, поэтому у вас возникнут серьезные проблемы, когда сервер попытается прочитать входные данные и разобраться в них.
Я бы посоветовал вам использовать простой элемент управления HTML (no runat="server"
) для месяца и прочитать его на стороне сервера с чем-то вроде
var month = Request["Month"];
Комментарии:
1. Спасибо! Я рассмотрю это.