这真是太愚蠢,但让我绝对疯狂。
<input type="radio" name="OptGroup" id="<%#"rbEmail" + ((Action)Container.DataItem).ID %>" value="<%#((Action)Container.DataItem).ID %>" runat="server" /><label for="<%#"rbEmail" + ((Action)Container.DataItem).ID %>"><%#((Action)Container.DataItem).Action %></label>
我在这里做错了什么!我也试过了:
<input type="radio" name="OptGroup" id='<%#"rbEmail" + ((Action)Container.DataItem).ID %>' value='<%#((Action)Container.DataItem).ID %>' runat="server" /><label for='<%#"rbEmail" + ((Action)Container.DataItem).ID %>'><%#((Action)Container.DataItem).Action %></label>
和
<input type="radio" name="OptGroup" id="<%#'rbEmail' + ((Action)Container.DataItem).ID %>" value="<%#((Action)Container.DataItem).ID %>" runat="server" /><label for="<%#'rbEmail' + ((Action)Container.DataItem).ID %>"><%#((Action)Container.DataItem).Action %></label>
由于在转发器内部创建的GroupName存在问题,我特别不想使用asp.net radiobutton。我想使用裸单选按钮并将其值绑定到我的数据源。
答案 0 :(得分:3)
为html使用单引号。例如:
<input type='radio' name='OptGroup' id='<%#"rbEmail" + ((Action)Container.DataItem).ID %>' value='<%#((Action)Container.DataItem).ID %>' runat='server' /><label for='<%#"rbEmail" + ((Action)Container.DataItem).ID %>'><%#((Action)Container.DataItem).Action %></label>
答案 1 :(得分:3)
您是否需要访问控制服务器端?如果没有,请取消runat =“server”,不能将数据绑定到服务器控件的ID属性。不确定这是不是问题,因为那会给你一个不同的错误
编辑:
这样的事情应该适合你的目的..
<asp:Repeater runat="server">
<ItemTemplate>
<label><input type="radio" name="rbEmail" value='<%# ((Action)Container.DataItem).ID %>' /><%# ((Action)Container.DataItem).Action %></label>
</ItemTemplate>
</asp:Repeater>
然后在回发中,您可以从Request.Form获取值[“rbEmail”]
EDIT2:
经过全面测试的简单页面示例..
Default.aspx的
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<label><input type="radio" name="rbEmail" value='<%# Container.DataItem %>' /><%# Container.DataItem %></label>
</ItemTemplate>
</asp:Repeater>
<asp:Button ID="submit" runat="server" OnClick="submit_Click" Text="submit" />
</form>
</body>
</html>
Default.aspx.cs
using System;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Repeater1.DataSource = new string[] { "Hello", "World" };
Repeater1.DataBind();
}
protected void submit_Click(object sender, EventArgs e)
{
Response.Write(Request.Form["rbEmail"]);
}
}
答案 2 :(得分:0)
第一个是错误的,因为正如您所怀疑的那样,属性值的双引号和字符串文字周围的双引号会使解析器混淆。
我不能为我的生活看到第二个有什么问题。你是否也得到了同样的“形式不正确”的错误?