aspx页面上的C#代码 - 为什么不将此值赋给隐藏字段

时间:2014-04-30 13:48:35

标签: c# webforms

我有一个问题感觉有点微不足道,但我无法让它发挥作用。

<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不会触发断点。

有人可以纠正我的语法吗?

我也知道我可以在页面加载中绑定值。

谢谢!

2 个答案:

答案 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%,这将是因为它不是我通常使用的方法,但是你可能会有一些成功。