Как сослаться на выбранное значение веб-элемента управления .Net в NavigateURL

У меня есть страница ASP.Net с GridView. В одной из ячеек GridView есть элемент управления HyperLink, и его свойство NavigateURL установлено следующим образом:

NavigateUrl='<%# "~/telecom/SmartPhoneInventory.aspx?IMEI=" +  Eval("IMEI") %>'

На этой странице (не в GridView) есть RadioButtonList (rblDeviceType) с четырьмя значениями. Я хочу добавить еще одну строку запроса в NavigateURL гиперссылки, чтобы:

NavigateUrl='<%# "~/telecom/SmartPhoneInventory.aspx?IMEI=" +  Eval("IMEI") + "&devicetype=" + rblDeviceType.SelectedValue %>'

Это, конечно, неправильный синтаксис. Есть ли способ сделать это?


person Melanie    schedule 22.01.2014    source источник


Ответы (1)


Попробуй это:

В вашем html

<a href='<%= string.Format("~/telecom/SmartPhoneInventory.aspx?IMEI={0}&devicetype=", this.someValue, rblDeviceType.SelectedValue) %>'>
        Hello World
    </a>

или в вашем html:

<asp:HyperLink runat="server"
        NavigateUrl='' ID="demoLink">
            Hello World
        </asp:HyperLink>

а затем в вашем codebehind:

demoLink.NavigateUrl= string.Format("~/telecom/SmartPhoneInventory.aspx?IMEI={0}&devicetype=",this.someValue,rblDeviceType.SelectedValue)

Касательно

'someValue'

Который вы представляете как Eval("IMEI") в своем примере кода, поскольку ваш код не является частью сетки, вам нужно будет получить это либо непосредственно из элемента управления, сеанса, состояния просмотра или переменной на стороне сервера. Ваш пример кода не позволяет мне понять, где находится первоисточник этого значения.

Попробуйте это в своем коде:

public partial class _Default : Page
{
    public string someValue = "Hello World";

Использование string.Format и <%= вместо <%#

person Dalorzo    schedule 22.01.2014
comment
IMEI — это столбец в наборе данных, который привязан к GridView в коде позади. Я пробовал IMEI, IMEI и Eval(IMEI), используя ваш синтаксис, но я просто получаю сообщение об ошибке: Тег сервера неправильно сформирован. Кстати, я думаю, вам нужна закрытая скобка после SelectedValue, верно? - person Melanie; 22.01.2014
comment
Итак, если ваша переменная набора данных равна ds. someValue = ds.tables[0'].rows[1][IMEI]? Кстати, вы были правы насчет последней скобки :) - person Dalorzo; 22.01.2014
comment
@Melanie, мои извинения, я упустил из виду, что вы имели в виду гиперссылку asp:net. - person Dalorzo; 23.01.2014
comment
Большое спасибо, Далорзо! - person Melanie; 23.01.2014