0

我正在尝试<%=%>在服务器控件中使用,但它不起作用。
这是我的代码:

 <input type="button" runat="server" value="<< Previous" id="btnPrevious" 
        onclick="location.href='<%=PreviousLink %>'"/>

PreviousLink是页面中定义的属性。
当我查看页面时,整个表达式都是按原样编写的,没有被评估。

4

5 回答 5

1

你不能。您可以在控制器代码中定义它:

btnPrevious.OnClientClick = "location.href='" + PreviousLink + "'"
于 2013-02-19T11:18:08.597 回答
1

试试这个:

使用 jQuery:

<input type="button" runat="server" value="<< Previous" id="btnPrevious"/>
<script>
$(function () {
            $("#<%=btnPrevious.ClientID%>").on("click", function (event) {
                window.location.href = '<%=PreviousLink %>';
            });
});
</script>

使用 JavaScript:

function onButtonClick() {
        window.location.href = '<%=PreviousLink %>';
    }

<input type="button" runat="server" value="<< Previous" id="btnPrevious" onclick="onButtonClick();"/>

.aspx.cs(C# 代码):

public string PreviousLink = "http://stackoverflow.com/";
于 2013-02-19T11:29:35.247 回答
1

如果您删除runat server属性,则 <% %> 表达式将得到正确评估。
检查这个问题
为什么将 <%= %> 表达式作为服务器控件上的属性值会导致编译错误?

于 2013-02-19T11:40:29.730 回答
0

这也应该有效:

<script type="text/javascript">
function setLocation() {
  location.href = '<%=PreviousLink %>';
}
</script>
<input type="button" runat="server" value="<< Previous" id="btnPrevious" onclick="setLocation();"/>
于 2013-02-19T11:23:29.537 回答
0

您可以做的是使用 ASP.NET 内联表达式在页面加载期间设置值。

首先,在页面的代码隐藏中添加一个属性。

protected string InputValue { get; set; }

在这种情况Page_Load下,设置属性的值。

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        this.InputValue = "something";
    }
}

最后,在页面标记中添加一个内联表达式,如下所示:

<input type="text" name="txt" value="<%= this.InputValue %>" />

这将允许您设置input元素的值,而无需使其成为服务器端标记。

于 2013-02-19T11:54:40.523 回答