HTML / ASP.NET: - PullRequest
       22

HTML / ASP.NET:

4 голосов
/ 01 июля 2010

Я просто хочу спросить, есть ли возможность изменить:

<input type="hidden" name="reference" value="ABC"/>

на это:

<input type="hidden" name="reference" value="any values I want"/>

где я могу установить любые значения за .cs / C # - делая это динамически,Платежный шлюз, который я использую, требует, и я не могу найти способ включить элемент управления ASP.NET (?), И мне нужны ваши предложения / комментарии по этому поводу.Спасибо.

PS.<asp:HiddenField ID="reference" runat="server" Value="ABC" /> не работает, поскольку платежному шлюзу определенно требуется свойство 'name'.

Ответы [ 4 ]

6 голосов
/ 14 января 2014

Я знаю, что это старый пост, но для тех, кто хочет решить эту проблему сейчас - если вы добавите runat="server" к входу, имя будет изменено (например, MainContentArea_ctl00_ctl01_ctl01_amount).ClientIdMode="Static" поможет только для идентификатора.Чтобы обойти это:

На вашей html-странице используйте литерал:

    <asp:Literal runat="server" ID="litInputAmount"></asp:Literal>

В коде файла присвойте строку атрибуту «Текст» литерала.как бы вам хотелось.Также можно добавить правильное значение для поля значения:

    litInputAmount.Text = String.Concat("<input id='inputAmount' type='hidden' name='amount' value='", Price.ToString(), "'>");

Затем оно будет скомпилировано как:

    <input id="inputAmount" type="hidden" value="224.4" name="amount">

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

3 голосов
/ 01 июля 2010

Вы можете просто поставить runat="server" на элемент управления, чтобы получить к нему доступ из своего кода:

<input type="hidden" name="reference" id="reference" runat="server" />

Тогда в вашем коде позади:

void Page_Load(object sender, EventArgs e)
{
    // ...

    reference.Attriutes["value"] = "any values I want";

    // ...
}

Обратите внимание, что в этом случае атрибут "id" является обязательным, поскольку при наличии runat="server" атрибут id используется для указания имени сгенерированной переменной.

1 голос
/ 08 июня 2018

Вы можете использовать стандартный ввод типа hidden, как будто вы работаете со статическим HTML или Razor, и полагаться на выражение <%=, которое оценивается во время рендеринга, а не DataBind(), как выражения <%#. .

Таким образом, вы можете иметь обычный html, для которого вы можете иметь ASP.NET WebFroms генерировать скрытое значение ввода для вашей стороны сервера, без необходимости фактически отмечать ввод с помощью runat="server" или с помощью <asp:HiddenInput элемента управления. Смотрите пример ниже, который должен сделать работу:

<input type="hidden" id="add-to-wishlist-url" value='<%= YourServerSideExpressionHere.Execute() %>' />

Конечно, этот подход подходит не всем, но кажется наиболее близким к требованиям, описанным 7 лет назад ...

0 голосов
/ 10 мая 2016

//<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" /> protected string GetVariableValue(string AspxPage, string inputTagName) { ra migirad string RegPattern = string.Format("(?<=({0}\".value.\")).*(?=\"./>)", inputTagName); Regex regex = new Regex(RegPattern, RegexOptions.IgnoreCase); Match match = regex.Match(AspxPage); if (string.IsNullOrEmpty(match.Value)) { RegPattern = string.Format("<input[^>]*{0}[^>]*value=\"([^\"]*)\"", inputTagName); regex = new Regex(RegPattern, RegexOptions.IgnoreCase); match = regex.Match(AspxPage); return match.Groups[1].Value; } return match.Value; }

...