我有一个问题感觉有点微不足道,但我无法让它发挥作用。
<asp:HiddenField ID="hdnJsonData" runat="server" Value="<%#GetInterviewData%>"/>
我想将一些json数据分配给我计划用于淘汰赛的hdnJsonData。
using KnockoutApp.Models;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace KnockoutApp.Tutorials
{
public partial class WorkingWithLists : System.Web.UI.Page
{
protected string GetInterviewData
{
get
{
Product product = new Product();
product.Name = "Apple";
product.ExpiryDate = new DateTime(2008, 12, 28);
product.Price = 3.99M;
product.Sizes = new string[] { "Small", "Medium", "Large" };
string output = JsonConvert.SerializeObject(product);
Product deserializedProduct = JsonConvert.DeserializeObject<Product>(output);
return output;
}
}
protected void Page_Load(object sender, EventArgs e)
{
}
}
}
GetInterviewData不会触发断点。
有人可以纠正我的语法吗?
我也知道我可以在页面加载中绑定值。
谢谢!
答案 0 :(得分:0)
如果您正在使用服务器控件,并希望从服务器数据填充它,您应该只使用后端使用Page_Load填充它...这是正确的方法...现在如果你绝对想在aspx中做到这一点:
<%
string val = GetInterviewData;
%>
<asp:HiddenField ID="hdnJsonData" runat="server" Value="<%=val%>"/>
尝试并让我知道这是否有效...注意,要从aspx中查看GetInterviewData,您可能需要拼出命名空间路径......
答案 1 :(得分:0)
正如你所说的,你可以在后面的代码中做到这一点,因为你已经承认Ill假设那不是你所追求的!
您的代码目前是:
<asp:HiddenField ID="hdnJsonData" runat="server" Value="<%#GetInterviewData%>">
我看到的问题是hdnJsonData是一个服务器控件,并且不能以这种方式为其分配值。
你可以尝试
<input type="hidden" id="hdnJsonData" value="<%=(GetInterviewData)%>">
注意简写response.write =()而不是绑定表达式#()
如果你真的必须拥有hdnJsonData作为服务器控件,你可以保留你的代码并在后面的代码中调用Page.DataBind() - 而不是100%,这将是因为它不是我通常使用的方法,但是你可能会有一些成功。