1

我在 gridview 中有一个项目模板,它是 a:href,其值取决于同一网格视图内的绑定字段。所以,如果绑定字段(testType)的值为1,就会有一个链接,如果是2,就会显示另一个链接。这是代码:

         <ItemTemplate>
             <%#
                 Int32.Parse(DataBinder.Eval(Container.DataItem, "testType").ToString()) == 1 ?
                "<a target=\"_self\" href=\"TestRequestOverview.aspx?testCaseId=" + Int32.Parse(DataBinder.Eval(Container.DataItem, "testCaseId").ToString()) + "&toggle=1" + "&mode=toggle\" class=\"myToggle\">Change to Performance Test</a>" :

                "<a target=\"_self\" href=\"TestRequestOverview.aspx?testCaseId=" + Int32.Parse(DataBinder.Eval(Container.DataItem, "testCaseId").ToString()) + "&toggle=1" + "&mode=toggle\" class=\"myToggle\">Change to Unit Test</a>"
             %>

            </ItemTemplate>

现在需求变了,我必须添加第三个条件来检查 testType 是否为 0,所以我不能使用三元运算符。我对 asp 内联代码语法不是很熟悉,想知道如何使用可能是 if-else 块并且仍然使用 Container.DataItem 访问该字段,请有人帮助我好吗!!!

4

1 回答 1

0

由于每个标记都非常相似,我将使用一个简单的查找对象:

<script runat="server">
    private Dictionary<int, string> TypeNames = new  Dictionary<int, string>
    {
        { 1, "Change to Performance Test" },
        { 2, "Change to Unit Test" },
        // etc
    };
</script>

<ItemTemplate>
    <a target="_self" 
        href="TestRequestOverview.aspx?testCaseId=<%# DataBinder.Eval(Container.DataItem, "testType") %>&mode=toggle"
        class="myToggle">
        <%# TypeNames[Int32.Parse(DataBinder.Eval(Container.DataItem, "testType").ToString())] %>
    </a>
</ItemTemplate>
于 2013-07-25T23:05:00.913 回答