ASP.NET回发不工作的ContentPlaceHolder [英] ASP.NET POSTBACK does not work in contentplaceholder

查看:74
本文介绍了ASP.NET回发不工作的ContentPlaceHolder的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我只是在ASP.NET初学者。现在我有2页:主站和子页面(内容页)。在子页面,创建将被用于提交用户输入到服务器的HTML表单。我用ASP按钮提交的,但它只是运行我的JavaScript验证用户输入。在底部的标签被用来检查是否它回发与否。这始终显示后,我点击提交按钮假连刷新页面。我不知道我在做什么错在这里。另外,我想显示一个文本框的用户的所有信息,他们提交到服务器后。希望你能帮助我明确的解释。非常感谢你。

1 /母版页:

2 /子页面(内容页):

 < ASP:内容ID =内容2ContentPlaceHolderID =的ContentPlaceHolder=服务器>
< D​​IV CLASS =行>
        < D​​IV CLASS =盒子>
            < D​​IV CLASS =COL-LG-12>
                <小时>
                < H2类=介绍文字文本中心>联系与LT;强>周一阿美咖啡餐厅< / STRONG>
                < / H>
                <小时>
            < / DIV>
            < D​​IV CLASS =COL-MD-8ID =地图画布>
                <! - 选择您所在的位置找到它的谷歌地图和粘贴链接的IFRAME SRC - 使用iframe嵌入谷歌地图。如果你想使用谷歌地图API,而不是那么有吧! - >
                &所述;! - iframe的宽度=100%高度=400像素FRAMEBORDER =0滚动=否MARGINHEIGHT =0MARGINWIDTH =0 src=\"https://maps.google.com/maps?f=q&amp;source=s_q&amp;hl=en&amp;geo$c$c=&amp;q=14291+S+Euclid+St,+Garden+Grove,+CA+92843&amp;aq=&amp;sll=33.754949,-117.938489&amp;sspn=0.010437,0.021136&amp;ie=UTF8&amp;hq=&amp;hnear=14291+S+Euclid+St,+Garden+Grove,+California+92843&amp;t=m&amp;z=14&amp;ll=33.754949,-117.938489&amp;output=embed\"></!--iframe><br /&GT;&LT;小&GT;&LT;一href=\"https://maps.google.com/maps?f=q&amp;source=embed&amp;hl=en&amp;geo$c$c=&amp;q=14291+S+Euclid+St,+Garden+Grove,+CA+92843&amp;aq=&amp;sll=33.754949,-117.938489&amp;sspn=0.010437,0.021136&amp;ie=UTF8&amp;hq=&amp;hnear=14291+S+Euclid+St,+Garden+Grove,+California+92843&amp;t=m&amp;z=14&amp;ll=33.754949,-117.938489\"风格=COLOR:#0000FF;文本对齐:左&gt;查看大图&LT; / A&GT;&LT; /小 - &GT;
            &LT; / DIV&GT;            &LT; D​​IV CLASS =COL-MD-4&GT;
                &LT;&H5 GT;电话:&LT; / H5&GT;
                &LT; P&GT;&LT;强&GT;&******* LT; / STRONG&GT;
                &所述; / P&GT;
                &LT;&H5 GT;电子邮件:&LT; / H5&GT;
                &LT; P&GT;&LT;强&GT;&******* LT; / STRONG&GT;
                &所述; / P&GT;
                &LT; H5&gt;地址:LT; / H5&GT;
                &LT; P&GT;&LT;强&GT;&******* LT; / STRONG&GT;
                &所述; / P&GT;
            &LT; / DIV&GT;
            &LT; D​​IV CLASS =clearfix&GT;&LT; / DIV&GT;
        &LT; / DIV&GT;
    &LT; / DIV&GT;    &LT; D​​IV CLASS =行&GT;
        &LT; D​​IV CLASS =盒子&GT;
            &LT; D​​IV CLASS =COL-LG-12&GT;
                &LT;小时&GT;
                &LT; H2类=介绍文字文本中心&GT;联系
                &LT; / H&GT;
                &LT;小时&GT;                &LT;表格名称=的ContactForm方法=后&GT;
                    &LT; D​​IV CLASS =行ID =的ContactForm&GT;
                        &LT; D​​IV CLASS =表单组COL-LG-4&GT;
                            &LT;标签&gt;名称和LT; /标签&gt;
                            &LT;输入类型=文本ID =NAME级=表格控&GT;                        &LT; / DIV&GT;
                        &LT; D​​IV CLASS =表单组COL-LG-4&GT;
                            &LT;标签&gt;邮箱地址:LT; /标签&gt;
                            &LT;输入类型=文本ID =EMAIL级=表格控&GT;                        &LT; / DIV&GT;
                        &LT; D​​IV CLASS =表单组COL-LG-4&GT;
                            &LT;标签&gt;电话号码&LT; /标签&gt;
                            &LT;输入类型=文本ID =PHONE级=表格控&GT;                        &LT; / DIV&GT;
                        &LT; D​​IV CLASS =clearfix&GT;&LT; / DIV&GT;
                        &LT; D​​IV CLASS =表单组COL-LG-12&GT;
                            &LT;标签&gt;消息&LT; /标签&gt;
                            &LT; textarea的ID =MSG级=表格控行=6&GT;&LT; / textarea的&GT;                        &LT; / DIV&GT;
                        &LT; D​​IV CLASS =表单组COL-LG-12&GT;
                            &LT;输入类型=隐藏的名字=拯救值=接触&GT;
                            &LT; ASP:按钮的ID =btnSubmit按钮=服务器的OnClientClick =返回validateForm();文本=提交/&GT;
                        &LT; / DIV&GT;
                    &LT; / DIV&GT;
                &LT; /表及GT;
            &LT; / DIV&GT;
        &LT; / DIV&GT;
    &LT; / DIV&GT;    &LT;! - 输出信息将出现在这里 - &GT;
    &LT; P&GT;&LT; ASP:标签ID =LBL1=服务器/&GT;&LT; / P&GT;
&LT; / ASP:内容&GT;

下面是我的脚本@Chia ...

 &LT;脚本&GT;
    功能validateName(){
        。VAR X =的document.getElementById(NAME)值;
        如果(X == NULL ||点¯x==){
            警报(姓名必须填写);
            返回false;
        }
        其他
            返回true;
    }    功能validateEmail(){
        。变种Y =的document.getElementById(EMAIL)值;
        VAR atpos = y.indexOf(@);
        变种dotpos = y.lastIndexOf(。);
        如果(atpos&。1 || dotpos&下; atpos +2 || dotpos +2 = y.length){
            警报(不是一个有效的电子邮件地址);
            返回false;
        }
        其他
            返回true;
    }    功能validatePhone(){
        VAR formatForm = / ^ [1-9] \\ D {9} $ /;
        。变种Z =的document.getElementById(PHONE)值;
        如果(z.length == 0){
            警报(电话必须填写);
            返回false;
        }
        否则如果(z.length小于10 || z.length&GT;!10 ||(z.match(formatForm))){
            警报(不是一个有效的电话号码);
            返回false;
        }
        其他
            返回true;
    }    功能validateMess(){
        变种T =的document.getElementById(MSG)值。
        如果(T == NULL ||牛逼==){
            警报(Pleave留下您的信息);
            返回false;
        }
        其他
            返回true;
    }    功能validateForm(){
        如果(validateName()){
            如果(validateEmail()){
                如果(validatePhone()){
                    如果(validateMess()){
                        //警报(已提交成功地);
                        返回true;
                    }
                }
            }
        }
        返回false;
    }
 &LT; / SCRIPT&GT;


解决方案

您需要一个onclick属性添加到您的ASP按钮,在后面的类code调用的事件。例如:

 &LT; ASP:按钮的ID =btnSubmit按钮=服务器的OnClientClick =返回validateForm();的OnClick =btnSubmit_Click文本=提交/&GT;

这将触发事件

 保护无效btnSubmit_Click(对象发件人,发送System.EventArgs)
{
   //回发后做的东西在这里
}

由于你已经连接了你的OnClientClick属性,ValidateForm返回一个bool值,那么这将正确地只允许onclick事件火如果validateForm函数返回true。

I am just a beginner in ASP.NET. Now I have 2 pages: master and child page(content page). On the child page, I create a html form which will be used to submit user's input to the server. I use the asp button to submit those but it just validates user's input by running my javascript. The label at the bottom is used to check if it does postback or not. That always shows "False" even the page refreshes after I click on the submit button. I don't know what I am doing wrong here. Also, I want to show all the information of user in a textbox after they are submitted to the server. Hope you can help me out with clear explanation. Thank you very much.

1/Master Page:

2/Child Page (content page):

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder" Runat="Server">
<div class="row">
        <div class="box">
            <div class="col-lg-12">
                <hr>
                <h2 class="intro-text text-center">Contact <strong>Mon Ami Cafe Restaurant</strong>
                </h2>
                <hr>
            </div>
            <div class="col-md-8" id="map-canvas">
                <!-- Embedded Google Map using an iframe - to select your location find it on Google maps and paste the link as the iframe src. If you want to use the Google Maps API instead then have at it! -->
                <!--iframe width="100%" height="400px" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="https://maps.google.com/maps?f=q&amp;source=s_q&amp;hl=en&amp;geocode=&amp;q=14291+S+Euclid+St,+Garden+Grove,+CA+92843&amp;aq=&amp;sll=33.754949,-117.938489&amp;sspn=0.010437,0.021136&amp;ie=UTF8&amp;hq=&amp;hnear=14291+S+Euclid+St,+Garden+Grove,+California+92843&amp;t=m&amp;z=14&amp;ll=33.754949,-117.938489&amp;output=embed"></!--iframe><br /><small><a href="https://maps.google.com/maps?f=q&amp;source=embed&amp;hl=en&amp;geocode=&amp;q=14291+S+Euclid+St,+Garden+Grove,+CA+92843&amp;aq=&amp;sll=33.754949,-117.938489&amp;sspn=0.010437,0.021136&amp;ie=UTF8&amp;hq=&amp;hnear=14291+S+Euclid+St,+Garden+Grove,+California+92843&amp;t=m&amp;z=14&amp;ll=33.754949,-117.938489" style="color:#0000FF;text-align:left">View Larger Map</a></small-->
            </div>

            <div class="col-md-4">
                <h5>Phone:</h5>
                <p><strong>*******</strong>
                </p>
                <h5>Email:</h5>
                <p><strong>*******</strong>
                </p>
                <h5>Address:</h5>
                <p><strong>*******</strong>
                </p>
            </div>
            <div class="clearfix"></div>
        </div>
    </div>

    <div class="row">
        <div class="box">
            <div class="col-lg-12">
                <hr>
                <h2 class="intro-text text-center">Contact
                </h2>
                <hr>

                <form name="ContactForm"  method="post">
                    <div class="row" id="ContactForm">
                        <div class="form-group col-lg-4">
                            <label>Name</label>
                            <input type="text" id="NAME" class="form-control">

                        </div>
                        <div class="form-group col-lg-4">
                            <label>Email Address</label>
                            <input type="text" id="EMAIL" class="form-control">

                        </div>
                        <div class="form-group col-lg-4">
                            <label>Phone Number</label>
                            <input type="text" id="PHONE" class="form-control">

                        </div>
                        <div class="clearfix"></div>
                        <div class="form-group col-lg-12">
                            <label>Message</label>
                            <textarea id="MSG" class="form-control" rows="6"></textarea>

                        </div>
                        <div class="form-group col-lg-12">
                            <input type="hidden" name="save" value="contact">
                            <asp:Button ID="btnSubmit" runat="server" OnClientClick="return validateForm();" Text="Submit"/>
                        </div>
                    </div>
                </form>
            </div>
        </div>
    </div>

    <!--The output information will be here -->
    <p><asp:Label id="lbl1" runat="server" /></p>
</asp:Content>

Here is my script @Chia... :

<script>
    function validateName() {
        var x = document.getElementById("NAME").value;
        if (x == null || x == "") {
            alert("Name must be filled out");
            return false;
        }
        else
            return true;
    }

    function validateEmail() {
        var y = document.getElementById("EMAIL").value;
        var atpos = y.indexOf("@");
        var dotpos = y.lastIndexOf(".");
        if (atpos < 1 || dotpos < atpos + 2 || dotpos + 2 >= y.length) {
            alert("Not a valid e-mail address");
            return false;
        }
        else
            return true;
    }

    function validatePhone() {
        var formatForm = /^[1-9]\d{9}$/;
        var z = document.getElementById("PHONE").value;
        if (z.length == 0) {
            alert("Phone must be filled out");
            return false;
        }
        else if (z.length < 10 || z.length > 10 || !(z.match(formatForm))) {
            alert("Not a valid phone number");
            return false;
        }
        else
            return true;
    }

    function validateMess() {
        var t = document.getElementById("MSG").value;
        if (t == null || t == "") {
            alert("Pleave leave your message");
            return false;
        }
        else
            return true;
    }

    function validateForm() {
        if (validateName()) {
            if (validateEmail()) {
                if (validatePhone()) {
                    if (validateMess()) {
                        //alert("Submitted Sucessfully");
                        return true;
                    }
                }
            }
        }
        return false;
    }
 </script>

解决方案

You need to add an onclick attribute to your asp button which calls an event in your code behind class. For example

<asp:Button ID="btnSubmit" runat="server" OnClientClick="return validateForm();" OnClick="btnSubmit_Click" Text="Submit"/>

Which would trigger the event

protected void btnSubmit_Click(object sender, System.EventArgs e)
{
   // Do stuff here after postback
}

Because you have wired up your onclientclick attribute and ValidateForm is returning a bool value, then this will correctly only allow the onclick event to fire if the validateForm function returns true.

这篇关于ASP.NET回发不工作的ContentPlaceHolder的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆