复选框在 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)

在 asp.net 代码隐藏中默认选中的复选框列表项

混合 SPA 和 ASP.NET MVC 路由

ASP.NET中 后台 怎么获取 aspx页面 所有选中的checkBox控件的值

ASP.NET 2.0 嵌套数据网格?

Jquery在asp.net mvc的html表中获取带有选中复选框的行