私はこのコードを持っています:
<div>
<asp:DataList ID="dlRange" runat="server" RepeatDirection="Vertical" RepeatLayout="Flow"
OnItemDataBound="dlRange_ItemDataBound">
<ItemTemplate>
<hr>
<h2>
<%# Eval("COMMITEENAME")%>
</h2>
<asp:DataList ID="dlComp" runat="server" RepeatDirection="Vertical" RepeatLayout="Flow">
<ItemTemplate>
<label for='<%#"comp" + Eval("CID")%>'>
<%# Eval("NAME")%></label>
<input id='<%#"comp" + Eval("CID")%>' type="range" pattern="[0-9]*" name='<%#"comp" + Eval("CID")%>'
min="0" max="10" data-highlight="true" value="" data-show-value="true" data-popup-enabled="true" />
</ItemTemplate>
</asp:DataList>
</ItemTemplate>
</asp:DataList>
<br />
<asp:Button ID="btnSubmit" runat="server" Text="Submit" OnClick="btnSubmit_Click"
data-theme="b" />
</div>
コードビハインド:
protected void btnSubmit_Click(object sender, EventArgs e)
{
using (BOTEntities context = new BOTEntities())
{
string memberID = Request.Cookies["BOTDAT"]["PersonId"];
var comps = context.COMPETENCies.OrderBy(o => o.CID);
DateTime date = DateTime.Now;
foreach (var col in comps)
{
COMPVALUE newCompVal = new COMPVALUE();
newCompVal.CID = col.CID;
newCompVal.C_DATE = date;
newCompVal.MEMBERID = memberID;
decimal compVal = Request.Form["comp" + col.CID] == "" ? 0 : Convert.ToDecimal(Request.Form[(int)col.CID]);
newCompVal.VALUE = compVal;
context.COMPVALUEs.Add(newCompVal);
}
int result = context.SaveChanges();
System.Diagnostics.Debug.WriteLine("Added to CompValue" + result);
}
}
Convert.ToDecimal(Request.Form[(int)col.CID]);
正しい値を返しません。私のページには約 26 の入力範囲コントロールがありますがcompVal
、8 番目の入力を取得した後の爆弾の背後にあるコードです。何か案は?