.net - 如何访问不是母版页 <form> 的 <form>?

标签 .net asp.net master-pages

Winforms 开发人员转换为 Web 开发人员。我知道关于具有标签的母版页的部分,不清楚的是我是否可以在我的内容页面之一中拥有另一个标签。我一直在搜索中看到这两个答案。我认为是的,只要有 runat=server 就可以。问题是我有一个包含母版页的网页上的几个单选按钮。我有一个 .js 文件,它有一个函数,如果我将名称发送到其中,它将循环遍历表单中的控件以查看选择了哪个并返回所需的日期范围(MTD、QTD、YTD 等)。当我在非母版页网页上运行它时,它工作正常。但是,当我在具有母版页的网页上运行时,我似乎无法访问该元素。我尝试了 getElementByID,我尝试循环浏览页面元素等。也许我的处理方式不正确,我希望有人可以纠正我。

这是我的 .js 文件中的代码,可能有助于解释我想要做得更好一点。

var frmDateRanges = document.getElementById(formFieldName); 
var chosen;
var len = frmDateRanges.DateRanges.length;
for(i=0;i<len;i++) 
   {
    if(frmDateRanges.DateRanges[i].checked) 
      {
        chosen = frmDateRanges.DateRanges[i].value;
       }
    }

其中 formFieldName 是传递到函数中的参数,DateRanges 是为单选按钮指定的名称值。

在按钮中,我调用此函数:onclick ="FunctionCall('frmDateRanges')" FunctionCall 仅用于描述目的,'frmDateRanges' 是赋予表单 action=""

的名称和 id

感谢您的帮助,因为我现在很困惑。如果有更好的方法,请也告诉我。


修剪了客户端上重新渲染的 HTML

var theForm = document.forms['aspnetForm'];

if (!theForm) { theForm = document.aspnetForm; } 函数 __doPostBack(eventTarget, eventArgument) { if (!theForm.onsubmit || (theForm.onsubmit() != false)) { theForm.__EVENTTARGET.value = eventTarget; theForm.__EVENTARGUMENT.value = eventArgument; theForm.submit(); } }

 <form id = "frmDateRanges" action = "">
        <dl>
            <dt>&nbsp;Begin Date: &nbsp; &nbsp; End Date:</dt><dd><input name="ctl00$ContentPlaceHolder1$wpSettings$beginDT" type="text" id="ctl00_ContentPlaceHolder1_wpSettings_beginDT" style="width:67px;" />
                &nbsp;&nbsp;
                <input name="ctl00$ContentPlaceHolder1$wpSettings$endDT" type="text" id="ctl00_ContentPlaceHolder1_wpSettings_endDT" style="width:67px;" />
                &nbsp;
                <input id="btnBackOneDateRange" name = "btnBackOneDateRange" style="width: 20px; height: 21px" type="button"
                    value="<" onclick="BackOneDateRange('ctl00_ContentPlaceHolder1_wpSettings_beginDT', 'ctl00_ContentPlaceHolder1_wpSettings_endDT', 'frmDateRanges');"/>
                <input id="btnForwardOneDateRange" style="width: 20px; height: 21px" type="button"
                    value=">" /></dd><dd>

                        &nbsp;
                        <input type="radio" id="btnTrl1Yr" name="DateRanges" style="width: 19px"  value="1" onclick="GetTrailingYears('ctl00_ContentPlaceHolder1_wpSettings_beginDT', 'ctl00_ContentPlaceHolder1_wpSettings_endDT','1');" />
                        1 Year
                        <input type="radio" id="btnTrl3Yr" name="DateRanges" style="width: 19px"  value="3" onclick="GetTrailingYears('ctl00_ContentPlaceHolder1_wpSettings_beginDT', 'ctl00_ContentPlaceHolder1_wpSettings_endDT','3');" />
                        3 Years &nbsp;
                        <input type="radio" id="btnTrl5Yr" name="DateRanges" style="width: 19px"  value="5" onclick="GetTrailingYears('ctl00_ContentPlaceHolder1_wpSettings_beginDT', 'ctl00_ContentPlaceHolder1_wpSettings_endDT','5');" />
                        5 Years
                        <input type="radio" id="btnTrl10Yr" name="DateRanges" style="width: 19px"  value="10" onclick="GetTrailingYears('ctl00_ContentPlaceHolder1_wpSettings_beginDT', 'ctl00_ContentPlaceHolder1_wpSettings_endDT','10');" />
                        10 Years</dd><dt><input type="radio" id="btnMthToDate" name="DateRanges" style="width: 19px"  value="mth" onclick="GetMonthToDate('ctl00_ContentPlaceHolder1_wpSettings_beginDT', 'ctl00_ContentPlaceHolder1_wpSettings_endDT');" />
                            Month&nbsp;
                            <input type="radio" id="btnQtrToDate" name="DateRanges" style="width: 19px"  value="mth" onclick="GetQuarterToDate('ctl00_ContentPlaceHolder1_wpSettings_beginDT', 'ctl00_ContentPlaceHolder1_wpSettings_endDT');" />
                            Quarter &nbsp;<input type="radio" id="btnYearToDate" name="DateRanges" style="width: 19px"  value="mth" onclick="GetYearToDate('ctl00_ContentPlaceHolder1_wpSettings_beginDT', 'ctl00_ContentPlaceHolder1_wpSettings_endDT');" />
                            Calendar Year</dt></dl>

      </div> 
   </form>

最佳答案

您的内容页面中只能有 1 个 runat=server 表单。与页面中的其他表单混在一起可能会比其值(value)更令人困惑,即使它是一个小型 HTML 控件表单。

话虽如此,我认为您遇到了这样的问题:当您尝试访问内容页面中的 DOM 元素时,包含这些元素的母版页已更改您的所有 ID。如果检查渲染的表单源,您将看到 id 元素现在已预先添加内容容器 id,如下所示:

< input id="contentAreaId_controlID" />

这可能会导致您出现 document.getElementById(formFieldName); 问题;

关于.net - 如何访问不是母版页 <form> 的 <form>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2470886/

相关文章:

c# - 如何在表单窗口中仅拖放一个文件

c# - 如何在没有流或系统 io 的情况下压缩字节数组

c# - ASP.NET超链接绑定(bind)多个URL参数

javascript - 如何从 c# ext.net 调用 javascript

c# - ASP.NET 自定义 404 返回 200 OK 而不是 404 Not Found

c# - 将 System.Messaging.MessageQueue 或 WCF 用于 MSMQ?

c# - 什么是NullReferenceException,如何解决?

asp.net - 无法使用 AFNetworking 将 iOS 连接到 asp.net web 服务

asp.net - 使用 "!important"覆盖 SharePoint 2010 母版页的 css 属性

asp.net - UpdatePanel 异步回发后页面丢失标题