2009-11-05 4 views
0

Я дал кнопке атрибут, называемый notetype.Атрибут контроля доступа в коде

<asp:ImageButton ID="bttnSave" notetype="none" runat="server" ImageUrl="~/images/bttnSave.gif" onclick="bttnSave_Click" /> 

У меня есть функция от клика другой кнопки, которая устанавливает эту переменную в какой-то типа.

function addnotes(Type,IncId,Acc,Wit,Claim,Inj,Prop,Media) { 
    var bttnopenmodal = $get('<%=bttnopenmodal.ClientID %>'); 
    var bttnSave = $get('<%=bttnSave.ClientID %>'); 

    if (Type == 'Inc') { 
     bttnSave.notetype = 'Inc'; 

    } 

    bttnopenmodal.click(); 
    return false; 
} 

Однако в C# код кнопки:

protected void bttnSave_Click(object sender, ImageClickEventArgs e) 
{ 
    Response.Redirect(bttnSave.Attributes["notetype"]); 
} 

значение notetype кнопку СОХРАНИТЬ никогда еще 'никто', даже если я изменить его в JavaScript. Я даже предупредил, чтобы он изменил тип notetype, и это произошло. Я попытался обновить кнопку с помощью панели обновления безрезультатно. Как я могу правильно изменить этот notetype?

+1

Только атрибут 'value' элемента управления формой отправляется с сообщением формы (и для' 'ничего не отправляется вообще). Вы не можете ожидать, что браузер узнает, что отправить сообщение «notetype = none» в тело сообщения просто потому, что вы указали его как атрибут. Вот что ' 'будет использоваться для. Viewstate заставляет вас забыть все это до тех пор, пока вы не попытаетесь изменить его в клиенте, и все это взорвется. –

+0

опубликуйте это как ответ, и я приму это. Я использовал скрытые поля. – Eric

+0

@ Эрик: сделано и сделано. –

ответ

1

Только атрибут value элемента управления формы отправляется с сообщением формы (и для <input type="image" /> ничего не отправлено вообще). Вы не можете ожидать, что браузер узнает, что он отправит "notetype=none" в тело сообщения только потому, что вы указали его как атрибут. Это то, что будет использовать <input type="hidden" name="notetype" value="none" />.

Viewstate заставляет вас забыть обо всем этом до тех пор, пока вы не попытаетесь изменить его в клиенте, и все это взорвется.

1

Ваш код будет зависеть только от изменений на стороне клиента, которые могут быть отправлены. Данные в пользовательском атрибуте не возвращаются на сервер после отправки, поэтому он будет знать (только через состояние представления), какое значение имел атрибут при визуализации страницы.

+0

Это делает с тех пор. Кроме того, что я могу изменить значение скрытого поля, и он работает. – Eric

+0

просто не хотел использовать скрытые поля. – Eric

Смежные вопросы