Удалите ctl00$ContentBody$ из представленного идентификатора управления

Чтобы выполнить ваше требование, вы должны установить «.NET Core SDK» в виртуальной машине Azure Jenkins Linux, а затем просто использовать шаг сборки «Выполнить оболочку» с помощью команды «dotnet build ContinuousIntegration / ContinuousIntegration.sln»

Чтобы установить «.NET Core SDK» на виртуальной машине Azure Jenkins Linux, перейдите на https://dotnet.microsoft.com/learn/dotnet/hello-world-tutorial/install и нажмите на «Linux» на этой странице, а затем выберите необходимый дистрибутив Linux и следуйте приведенным инструкциям.

Для получения дополнительной информации о поддержке MSBuild в различных операционных системах см. https://github.com/Microsoft/msbuild/blob/master/documentation/wiki/Building-Testing-and-Debugging-on-. Net-Core-MSBuild.md

Просто к вашему сведению, я протестировал и воспроизвел ваш сценарий и столкнулся с той же ошибкой, о которой вы упомянули, а затем я выполнил описанный выше процесс и успешно решил проблему. Надеюсь, это поможет. Cheers !!

PS: в вашем скрипте оболочки вы должны перейти в нужную папку, чтобы это работало.

7
задан Josh Stodola 6 May 2009 в 02:32
поделиться

5 ответов

Quick and dirty was what I needed, folks. And thanks to HBoss I was able to come up with a very simple solution. On the code-behind of the page in question, I just added this subroutine...

Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
    Dim Html As New StringWriter()
    Dim Render As New HtmlTextWriter(Html)
    MyBase.Render(Render)
    writer.Write(Html.ToString().Replace("name=""ctl00$ContentBody$", "name=""").Replace("id=""ctl00_ContentBody_", "id="""))
End Sub
0
ответ дан 6 December 2019 в 21:19
поделиться

Small consolation for right now, but this "feature" will be fixed in Asp.Net 4.0. You will get settable ClientID property.

Other than that, the other responses are good.
Use <%= control.ClientID %>

or throw in JQuery and use $("[id$='myId'])

Or, on your input tags, don't put runtime='server'. You should be able to retrieve the values via the Form member (just like in traditional asp)

Or, skip Asp.Net WebForms and skip to Asp.Net MVC, which gives you complete control of the HTML markup that is generated. You have to change how you are doing things a bit more, but that might be less frustrating for you.

6
ответ дан 6 December 2019 в 21:19
поделиться

Поскольку кажется, что вы просто пытаетесь удалить идентификаторы клиента из окончательного вывода, вы можете переопределить событие визуализации на своей странице и использовать регулярное выражение для удаления их. Вы можете увидеть пример в сообщении ниже.

Перепишите вывод страницы ASP.NET

После того, как вы получите текст, с которым работаете, вы, скорее всего, можете написать что-то вроде ...

output = Regex.Replace(
    output, 
    @"id\=""ctl00\$[^\""]*""", 
    string.Empty, 
    RegexOptions.IgnoreCase
    );

А затем напишите окончательный вывод в HtmlTextWriter.

Надеюсь, что это поможет.

0
ответ дан 6 December 2019 в 21:19
поделиться

I know of no way to remove the naming container from being prepended to the control id. In the past I've used a convenience method to look up such ids in javascript that iterates through the tag names and uses a regular expression to match the one that ends with $realID, where realID is the id that I gave to the control in mark up. Now, I would use jQuery for this using a selector like:

 $('[id$="realID"]')

Which basically does the same thing as my old convenience method, but it's built into the framework.

2
ответ дан 6 December 2019 в 21:19
поделиться

Насколько мне известно, их нельзя удалить по той причине, по которой вы сказали; чтобы убедиться, что они уникальны. На мой взгляд, у вас есть два варианта:

  1. Создайте переменную JS и добавьте ее ко всем вашим вызовам JS, чтобы она искала правильный идентификатор
  2. Используйте <% = control.ClientID%> в вашем javascript, чтобы он использует новый ID.

С # 1, если какой-либо из ваших входных данных находится в любом другом теге сервера, он не будет работать. Это предрасположено к множеству проблем, поэтому я бы выбрал № 2.

2 зависит либо от того, находится ли javascript на самой странице, либо от того, является ли JS внешним, вы должны иметь возможность передавать идентификаторы. Этот код не тестировался и предназначен только для примера, но я имею в виду следующее:

function alertValue(textID){
     alert(document.GetElementById(textID).value);
}

<input id="txtBox" runat="server" type="Button" text="Click Me" onClick="alertValue('<%= txtBox.ClientID %>');" />

Это действительно зависит от того, как ваш JS реализован.

0
ответ дан 6 December 2019 в 21:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: