我正在尝试<%=%>
在服务器控件中使用,但它不起作用。
这是我的代码:
<input type="button" runat="server" value="<< Previous" id="btnPrevious"
onclick="location.href='<%=PreviousLink %>'"/>
PreviousLink
是页面中定义的属性。
当我查看页面时,整个表达式都是按原样编写的,没有被评估。
我正在尝试<%=%>
在服务器控件中使用,但它不起作用。
这是我的代码:
<input type="button" runat="server" value="<< Previous" id="btnPrevious"
onclick="location.href='<%=PreviousLink %>'"/>
PreviousLink
是页面中定义的属性。
当我查看页面时,整个表达式都是按原样编写的,没有被评估。
你不能。您可以在控制器代码中定义它:
btnPrevious.OnClientClick = "location.href='" + PreviousLink + "'"
试试这个:
使用 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/";
如果您删除runat server
属性,则 <% %> 表达式将得到正确评估。
检查这个问题
为什么将 <%= %> 表达式作为服务器控件上的属性值会导致编译错误?
这也应该有效:
<script type="text/javascript">
function setLocation() {
location.href = '<%=PreviousLink %>';
}
</script>
<input type="button" runat="server" value="<< Previous" id="btnPrevious" onclick="setLocation();"/>
您可以做的是使用 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
元素的值,而无需使其成为服务器端标记。