2012-05-15 5 views
0

Кто-нибудь знает, как я могу получить значение текстового поля на основе имени в контроллере?Как получить значение текстового поля на основе имени в контроллере?

Пример:

<asp:TextBox runat="server" ID="stDate" Text='<%# Eval("StartDate")%>' Width="6em" /> 

Когда я прочитал из исходного кода, это как показано ниже:

<input name="ctl00$cplh$GridView1$ctl10$stDate" type="text" id="stDate" style="width:6em;" /> 

Как я могу получить получить это значение текстового поля на основе имени ctl00$cplh$GridView1$ctl10$stDate в контроллере ?

Примечание: причина, я хотел бы сделать, таким образом, потому что у меня есть более 1 текстовое поле используете один и тот же идентификатор (stDate)

+0

Почему бы не написать название собственности напрямую, а не смотреть на сгенерированный номер –

+0

RE 'NOTE': возможно ли это? У меня создалось впечатление, что каждый элемент, будь то обычный HTML или ASP.NET, должен иметь уникальный идентификатор. Вид цели называть его _ID_, он идентифицирует элемент. – kaveman

+0

Это возможно, но не соответствует соглашениям XHTML и идет вразрез с лучшими практиками. все и все это не должно быть сделано. –

ответ

0

Чтобы получить идентификатор сгенерированного на странице, вы должны получить ClientID

stDate.ClientID 
0

есть несколько вещей, которые я хочу предложить:

  • ID должен быть уникальным, вы должны присвоить уникальный идентификатор для каждого контроллера в вашей странице.
  • .NET требует привязки к вашему контролю - поэтому ему нужно установить имя, если оно будет создано .NET (вы не можете его изменить, даже если пытаетесь его принудительно).
  • Если вы хотите присвоить общее имя между контроллерами использовать класс атрибутов, например: <input id="txtbox1" class="commonController" type="text" value="input1"> <input id="txtbox2" class="commonController borderClass" type="text" value="input2">

p.d .: помните, что вы можете назначить несколько классов к контроллеру.

  • помнить также, что id только для клиентской манипуляции со стороны DOM ... name требуется для браузера на самом деле опубликовать содержание

Если вы хотите больше информации, проверьте here и here

0

Если вы используете ASP.NET 4, вы можете установить ClientIDMode в static, а asp сохраняет идентификатор, как вы его установили.

<asp:TextBox runat="server" ID="stdate" ClientIDMode="Static" /> 

Это помогает, если вам нужно использовать текстовое поле на скриптах на стороне клиента. Here's статья об этом. Вам нужно будет убедиться, что идентификатор уникален тогда, если вам нужно общее имя, было бы лучше использовать класс, предложенный Луисом.

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