У меня есть главный шаблон, который используют все страницы моего сайта. В шаблоне есть пустая панель. В коде для страницы динамически создается кнопка изображения на панели в моем разделе Page_Load (выполняется вызов БД, чтобы определить, какая кнопка должна отображаться через мой контроллер).
На некоторых страницах, которые используют этот шаблон и имеют формы на них, нажатие клавиши Enter инициирует событие нажатия на этой кнопке изображения, а не кнопку отправки в форме. Есть ли простой способ предотвратить срабатывание события нажатия кнопки изображения, если оно не было нажато мышью? Я думаю, что метод javascript - это взлом, тем более что кнопка даже не существует в главном шаблоне до тех пор, пока кнопка не будет динамически создана в Page_Load (это ужасно, так как я не могу просто сделать <% =btnName.ClientId %>
, чтобы обратиться к название кнопки на моей странице aspx).
Я попытался установить сверхвысокое значение tabindex для кнопки с изображением, и это ничего не дало. Также установите кнопку в качестве кнопки DefaultButton на своей панели в главном шаблоне, но это тоже не сработало. Более того, я не хочу добавлять свойство ко всем моим страницам, которые используют этот шаблон (их сотни). Было бы оптимально найти решение, работающее глобально, из моего основного шаблона.
Я постараюсь показать наш пример здесь:
У нас есть кнопка в верхней части каждой страницы в нашей системе, которая позволяет пометить страницу как одну из избранных, что-то вроде серверной системы закладок. Когда страница загружается, она смотрит, является ли страница одной из ваших любимых или нет, а затем показывает золотую звезду, если она есть, и серую звезду, если это не так. Нажатие кнопки со звездочкой переключает статус избранного на странице.
В моем мастер-шаблоне (FullMenu.master) у меня есть эта панель
<asp:Panel runat="server" ID="pnlFavorite" style="display:inline;"></asp:Panel>
Далее есть класс, который создает кнопку и добавляет ее на панель в главном шаблоне:
public void InsertStarButton()
{
CreateStarButton();
pnl.Controls.Add(bright);
}
и
private void CreateStarButton()
{
bright = new ImageButton();
bright.ImageUrl = "~/resources/images/star.png";
bright.Height = new Unit(12, UnitType.Pixel);
bright.ID = "btnStar";
}
То, что я пробовал ранее, это не сработало, было в InsertStarButton()
Я добавил строку pnl.DefaultButton = "btnStar"
, но это ничего не изменило на странице. Даже если бы у меня мигал курсор внутри текстового поля в форме на странице, кнопка «звезда» запускает событие щелчка, если нажата клавиша Enter.