复选框在 asp.net 和 HTML 混合页面中不起作用
Posted
技术标签:
【中文标题】复选框在 asp.net 和 HTML 混合页面中不起作用【英文标题】:Checkbox not working in asp.net and HTML mixed page 【发布时间】:2014-02-24 08:47:51 【问题描述】:我正在努力解决网站是 asp.net/C# 但 .aspx 页面上的控件是 html 的问题,如果我将所有内容都更改为 asp.net 控件,我不确定它会如何处理.变化也很小。我的任务是添加一个复选框,如<input type="checkbox" name="disableFeatureManager" runat="server" id="disableFeatureManager" />Disable Feature Manager
和.cs 页面中我想检查该框是否被选中并根据它做出决定,但控件的选中属性始终为false
。提交按钮也是一个 HTML 控件:<input type="submit" value="Start" name="submitButton" />
在Page_Load
中检查如果这样的检查返回 false。
if (disableFeatureManager != null && disableFeatureManager.Checked)
nextURL.Append(FeatureManagerChoices.CreateQueryStringFromFormData(Request.Form));
【问题讨论】:
【参考方案1】:您可以通过执行以下操作将复选框保留为 Html 服务器控件:
<input type="checkbox" name="disableFeatureManager" runat="server" id="disableFeatureManager" />
然后您可以将您的按钮更改为 Web 控件,如下所示:
<asp:Button ID="submitStart" runat="server" OnClick="btn1_Click" Text="Start" ClientIDMode="Static" />
与上面呈现的 HTML 的唯一区别是输出的名称,但如果您需要一个友好一致的 ID 用于 javascript 操作,您将拥有一个 submitStart
的 ID,因为 ClientIdMode
是静态的。
要连接事件,请添加此代码,该代码将从复选框中读取值:
protected void btn1_Click(object sender, EventArgs e)
var isChecked = disableFeatureManager.Checked;
【讨论】:
感谢您的意见。在 Page_Load 中有根据不同条件附加的 StringBuilder 对象,其中之一是此 FeatureManager 调用,因此我需要从 Page_Load 中的复选框中获取值。另外,我刚刚记得,这是一个 MVC 2 应用程序,我以前没有使用过 MVC。 @Risho 哦,对了。它没有被标记为 MVC 问题。您能否提供与 Page_Load 相关的 View 和 Action(s) 的代码? 我的错,正如我所说,我的第一个 MVC 应用程序被扔进了深渊。完全忘记了。这是一个巨大的解决方案,我会尽力发布您要求的代码。【参考方案2】:正如我之前提到的,我深陷 MVC 的深渊。同事提供了一个简单的答案(至少在这种情况下):
bool isChecked = false;
if(Request["disableFeatureManager"] != null)
isChecked = (Request["disableFeatureManager"].ToLower() == "on");
if (!isChecked)
nextURL.Append(FeatureManagerChoices.CreateQueryStringFromFormData(Request.Form));
我认为这可以进一步简化为一个IF
语句。
【讨论】:
以上是关于复选框在 asp.net 和 HTML 混合页面中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
asp.net core razor 页面复选框模型绑定(始终为 false)