2010-08-30 2 views
0

У меня есть страница asp.net, и я пытаюсь добавить пару скрытых элементов управления HTML. Я отправлю эту форму на другой сайт (PP), поэтому мне нужно, чтобы имена элементов управления НЕ менялись при визуализации. Есть ли способ сделать ASP.NET честью свойство name, которое я установил в коде?ASP.NET HtmlInputHidden control - остановить имя от изменения?

В качестве альтернативы, мне не нужно динамически создавать эти элементы управления, можно также просто присвоить значение в существующий HTML-поле, но я не знаю, как сделать это с ASP.NET/C#

+1

Какую версию asp.net вы используете? Если вы используете .NET 4, это упростит ситуацию ... например. http://weblogs.asp.net/scottgu/archive/2010/03/30/cleaner-html-markup-with-asp-net-4-web-forms-client-ids-vs-2010-and-net- 4-0-series.aspx – Charlino

+0

Im using ASP.NET 3.5 –

ответ

2

Используете ли вы ASP.NET 4.0? Вы можете использовать ClientIDMode на элементе управления со значением static, а идентификатор не изменится.

В противном случае вы можете использовать литерал для вывода самого элемента или его значения. На странице вы находитесь вы должны:

<input type="hidden" id="ppID" value='<asp:Literal ID="ppIDValue" runat="server" />' /> 

или

<input type="hidden" id="ppID" value="<%= ppIDValue %>" /> 

А в коде позади или где:

this.ppIDValue.Text = "value for ppID"; 

или (сокращенно):

public class MyPage : Page 
{ 
    public string ppIDValue = "0"; 
    override OnLoad() 
    { this.ppIDValue = "100"; } 
} 
+0

Im using ASP.NET 3.5. Можете ли вы привести пример литерального вывода? –

+0

Спасибо! Только то, что мне нужно –

0

Проблема с pu Литералы tting внутри HTML-тегов заключаются в том, что литералы очень склонны к некоторому раздражающему моменту времени удалять из файла designer-codebehind. Даже если вы можете вручную добавить их, это в большинстве случаев испортит сопоставление между графическим редактором и конструкторским кодом.

Кроме того, если вы используете мастер-страницы, они в любом случае изменят значение атрибута name в ваших скрытых полях.

Я искал лучший способ сделать это сам и собирался написать собственный пользовательский элемент управления, чтобы сохранить значение атрибута name. Затем я столкнулся с this answer с аналогичным вопросом, где упоминался Page.ClientScript.RegisterHiddenField («ppID», «1234»). Бинго!

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