asp.net 中服务器表单中的简单表单?
我有一个奇怪的情况...(对于像我这样的初学者来说很奇怪,而不是对于专家来说:)
在我网站的页面中,我有:
<form runat="server">
<!--some user controls-->
<form action="http://gramma.us1.list-manage.com/subscribe/post?u=64d2cf63fb98f334f406892db&id=f3181fb3be" method="post">
<!-- rest of newsletter code -->
</form>
<!--other user controls-->
</form>
如您所见,该嵌套表单来自邮件黑猩猩时事通讯订阅 html 代码生成的一些代码。
当然,这是行不通的。 (页面已成功呈现,但表单发布不起作用)
问题是:
- 哪种解决方法可以使此嵌套表单正常工作?我无法在页面中使用多个
runat="server"
表单将主表单与嵌套表单分开...
更新:
来自邮件黑猩猩的整个代码...
<div id="mc_embed_signup">
<form action="http://gramma.us1.list-manage1.com/subscribe/post?u=64d2cf63fb98f334f406892db&id=f3181fb3be" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank" style="font: normal 100% Arial, sans-serif;font-size: 10px;">
<fieldset style="-moz-border-radius: 4px;border-radius: 4px;-webkit-border-radius: 4px;border: 1px solid #ccc;padding-top: 1.5em;margin: .5em 0;background-color: #fff;color: #000;text-align: left;">
<legend style="white-space: normal;text-transform: capitalize;font-weight: bold;color: #000;background: #fff;padding: .5em 1em;border: 1px solid #ccc;-moz-border-radius: 4px;border-radius: 4px;-webkit-border-radius: 4px;font-size: 1.2em;"><span>join our mailing list</span></legend>
<div class="indicate-required" style="text-align: right;font-style: italic;overflow: hidden;color: #000;margin: 0 9% 0 0;">* indicates required</div>
<div class="mc-field-group" style="margin: 1.3em 5%;clear: both;overflow: hidden;">
<label for="mce-EMAIL" style="display: block;margin: .3em 0;line-height: 1em;font-weight: bold;">Adresa de e-mail <strong class="note-required">*</strong>
</label>
<input type="text" value="" name="EMAIL" class="required email" id="mce-EMAIL" style="margin-right: 1.5em;padding: .2em .3em;width: 90%;float: left;z-index: 999;">
</div>
<div id="mce-responses" style="float: left;top: -1.4em;padding: 0em .5em 0em .5em;overflow: hidden;width: 90%;margin: 0 5%;clear: both;">
<div class="response" id="mce-error-response" style="display: none;margin: 1em 0;padding: 1em .5em .5em 0;font-weight: bold;float: left;top: -1.5em;z-index: 1;width: 80%;background: FBE3E4;color: #D12F19;"></div>
<div class="response" id="mce-success-response" style="display: none;margin: 1em 0;padding: 1em .5em .5em 0;font-weight: bold;float: left;top: -1.5em;z-index: 1;width: 80%;background: #E3FBE4;color: #529214;"></div>
</div>
<div><input type="submit" value="Subscribe" name="subscribe" id="mc-embedded-subscribe" class="btn" style="clear: both;width: auto;display: block;margin: 1em 0 1em 5%;"></div>
</fieldset>
<a href="#" id="mc_embed_close" class="mc_embed_close" style="display: none;">Close</a>
</form>
</div>
<script type="text/javascript">
var fnames = new Array(); var ftypes = new Array(); fnames[0] = 'EMAIL'; ftypes[0] = 'email'; fnames[1] = 'FNAME'; ftypes[1] = 'text';
try {
var jqueryLoaded = jQuery;
jqueryLoaded = true;
} catch (err) {
var jqueryLoaded = false;
}
var head = document.getElementsByTagName('head')[0];
if (!jqueryLoaded) {
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js';
head.appendChild(script);
if (script.readyState && script.onload !== null) {
script.onreadystatechange = function () {
if (this.readyState == 'complete') mce_preload_check();
}
}
}
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'http://downloads.mailchimp.com/js/jquery.form-n-validate.js';
head.appendChild(script);
var err_style = '';
try {
err_style = mc_custom_error_style;
} catch (e) {
err_style = 'margin: 1em 0 0 0; padding: 1em 0.5em 0.5em 0.5em; background: ERROR_BGCOLOR none repeat scroll 0% 0%; font-weight: bold; float: left; z-index: 1; width: 80%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: ERROR_COLOR;';
}
var head = document.getElementsByTagName('head')[0];
var style = document.createElement('style');
style.type = 'text/css';
if (style.styleSheet) {
style.styleSheet.cssText = '.mce_inline_error {' + err_style + '}';
} else {
style.appendChild(document.createTextNode('.mce_inline_error {' + err_style + '}'));
}
head.appendChild(style);
setTimeout('mce_preload_check();', 250);
var mce_preload_checks = 0;
function mce_preload_check() {
if (mce_preload_checks > 40) return;
mce_preload_checks++;
try {
var jqueryLoaded = jQuery;
} catch (err) {
setTimeout('mce_preload_check();', 250);
return;
}
try {
var validatorLoaded = jQuery("#fake-form").validate({});
} catch (err) {
setTimeout('mce_preload_check();', 250);
return;
}
mce_init_form();
}
function mce_init_form() {
jQuery(document).ready(function ($) {
var options = { errorClass: 'mce_inline_error', errorElement: 'div', onkeyup: function () { }, onfocusout: function () { }, onblur: function () { } };
var mce_validator = $("#mc-embedded-subscribe-form").validate(options);
$("#mc-embedded-subscribe-form").unbind('submit'); //remove the validator so we can get into beforeSubmit on the ajaxform, which then calls the validator
options = { url: 'http://gramma.us1.list-manage.com/subscribe/post-json?u=64d2cf63fb98f334f406892db&id=f3181fb3be&c=?', type: 'GET', dataType: 'json', contentType: "application/json; charset=utf-8",
beforeSubmit: function () {
$('#mce_tmp_error_msg').remove();
$('.datefield', '#mc_embed_signup').each(
function () {
var txt = 'filled';
var fields = new Array();
var i = 0;
$(':text', this).each(
function () {
fields[i] = this;
i++;
});
$(':hidden', this).each(
function () {
if (fields.length == 2) fields[2] = { 'value': 1970 }; //trick birthdays into having years
if (fields[0].value == 'MM' && fields[1].value == 'DD' && fields[2].value == 'YYYY') {
this.value = '';
} else if (fields[0].value == '' && fields[1].value == '' && fields[2].value == '') {
this.value = '';
} else {
this.value = fields[0].value + '/' + fields[1].value + '/' + fields[2].value;
}
});
});
return mce_validator.form();
},
success: mce_success_cb
};
$('#mc-embedded-subscribe-form').ajaxForm(options);
});
}
function mce_success_cb(resp) {
$('#mce-success-response').hide();
$('#mce-error-response').hide();
if (resp.result == "success") {
$('#mce-' + resp.result + '-response').show();
$('#mce-' + resp.result + '-response').html(resp.msg);
$('#mc-embedded-subscribe-form').each(function () {
this.reset();
});
} else {
var index = -1;
var msg;
try {
var parts = resp.msg.split(' - ', 2);
if (parts[1] == undefined) {
msg = resp.msg;
} else {
i = parseInt(parts[0]);
if (i.toString() == parts[0]) {
index = parts[0];
msg = parts[1];
} else {
index = -1;
msg = resp.msg;
}
}
} catch (e) {
index = -1;
msg = resp.msg;
}
try {
if (index == -1) {
$('#mce-' + resp.result + '-response').show();
$('#mce-' + resp.result + '-response').html(msg);
} else {
err_id = 'mce_tmp_error_msg';
html = '<div id="' + err_id + '" style="' + err_style + '"> ' + msg + '</div>';
var input_id = '#mc_embed_signup';
var f = $(input_id);
if (ftypes[index] == 'address') {
input_id = '#mce-' + fnames[index] + '-addr1';
f = $(input_id).parent().parent().get(0);
} else if (ftypes[index] == 'date') {
input_id = '#mce-' + fnames[index] + '-month';
f = $(input_id).parent().parent().get(0);
} else {
input_id = '#mce-' + fnames[index];
f = $().parent(input_id).get(0);
}
if (f) {
$(f).append(html);
$(input_id).focus();
} else {
$('#mce-' + resp.result + '-response').show();
$('#mce-' + resp.result + '-response').html(msg);
}
}
} catch (e) {
$('#mce-' + resp.result + '-response').show();
$('#mce-' + resp.result + '-response').html(msg);
}
}
}
</script>
<!--End mc_embed_signup-->
I have a strange situation...(strange for beginners like me not for experts:)
In my pages from my web site I have:
<form runat="server">
<!--some user controls-->
<form action="http://gramma.us1.list-manage.com/subscribe/post?u=64d2cf63fb98f334f406892db&id=f3181fb3be" method="post">
<!-- rest of newsletter code -->
</form>
<!--other user controls-->
</form>
As you see, that nested form is from some generated code from mail chimp newsletter subscribing html code.
Of course, this does not work. (the page is successfully rendered but the form posting does not work)
The question is:
- which is the work-around to make this nested form to work? I cannot use multiple
runat="server"
forms in my page to separate the main form from the nested one...
UPDATE:
The entire code from mail chimp...
<div id="mc_embed_signup">
<form action="http://gramma.us1.list-manage1.com/subscribe/post?u=64d2cf63fb98f334f406892db&id=f3181fb3be" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank" style="font: normal 100% Arial, sans-serif;font-size: 10px;">
<fieldset style="-moz-border-radius: 4px;border-radius: 4px;-webkit-border-radius: 4px;border: 1px solid #ccc;padding-top: 1.5em;margin: .5em 0;background-color: #fff;color: #000;text-align: left;">
<legend style="white-space: normal;text-transform: capitalize;font-weight: bold;color: #000;background: #fff;padding: .5em 1em;border: 1px solid #ccc;-moz-border-radius: 4px;border-radius: 4px;-webkit-border-radius: 4px;font-size: 1.2em;"><span>join our mailing list</span></legend>
<div class="indicate-required" style="text-align: right;font-style: italic;overflow: hidden;color: #000;margin: 0 9% 0 0;">* indicates required</div>
<div class="mc-field-group" style="margin: 1.3em 5%;clear: both;overflow: hidden;">
<label for="mce-EMAIL" style="display: block;margin: .3em 0;line-height: 1em;font-weight: bold;">Adresa de e-mail <strong class="note-required">*</strong>
</label>
<input type="text" value="" name="EMAIL" class="required email" id="mce-EMAIL" style="margin-right: 1.5em;padding: .2em .3em;width: 90%;float: left;z-index: 999;">
</div>
<div id="mce-responses" style="float: left;top: -1.4em;padding: 0em .5em 0em .5em;overflow: hidden;width: 90%;margin: 0 5%;clear: both;">
<div class="response" id="mce-error-response" style="display: none;margin: 1em 0;padding: 1em .5em .5em 0;font-weight: bold;float: left;top: -1.5em;z-index: 1;width: 80%;background: FBE3E4;color: #D12F19;"></div>
<div class="response" id="mce-success-response" style="display: none;margin: 1em 0;padding: 1em .5em .5em 0;font-weight: bold;float: left;top: -1.5em;z-index: 1;width: 80%;background: #E3FBE4;color: #529214;"></div>
</div>
<div><input type="submit" value="Subscribe" name="subscribe" id="mc-embedded-subscribe" class="btn" style="clear: both;width: auto;display: block;margin: 1em 0 1em 5%;"></div>
</fieldset>
<a href="#" id="mc_embed_close" class="mc_embed_close" style="display: none;">Close</a>
</form>
</div>
<script type="text/javascript">
var fnames = new Array(); var ftypes = new Array(); fnames[0] = 'EMAIL'; ftypes[0] = 'email'; fnames[1] = 'FNAME'; ftypes[1] = 'text';
try {
var jqueryLoaded = jQuery;
jqueryLoaded = true;
} catch (err) {
var jqueryLoaded = false;
}
var head = document.getElementsByTagName('head')[0];
if (!jqueryLoaded) {
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js';
head.appendChild(script);
if (script.readyState && script.onload !== null) {
script.onreadystatechange = function () {
if (this.readyState == 'complete') mce_preload_check();
}
}
}
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'http://downloads.mailchimp.com/js/jquery.form-n-validate.js';
head.appendChild(script);
var err_style = '';
try {
err_style = mc_custom_error_style;
} catch (e) {
err_style = 'margin: 1em 0 0 0; padding: 1em 0.5em 0.5em 0.5em; background: ERROR_BGCOLOR none repeat scroll 0% 0%; font-weight: bold; float: left; z-index: 1; width: 80%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: ERROR_COLOR;';
}
var head = document.getElementsByTagName('head')[0];
var style = document.createElement('style');
style.type = 'text/css';
if (style.styleSheet) {
style.styleSheet.cssText = '.mce_inline_error {' + err_style + '}';
} else {
style.appendChild(document.createTextNode('.mce_inline_error {' + err_style + '}'));
}
head.appendChild(style);
setTimeout('mce_preload_check();', 250);
var mce_preload_checks = 0;
function mce_preload_check() {
if (mce_preload_checks > 40) return;
mce_preload_checks++;
try {
var jqueryLoaded = jQuery;
} catch (err) {
setTimeout('mce_preload_check();', 250);
return;
}
try {
var validatorLoaded = jQuery("#fake-form").validate({});
} catch (err) {
setTimeout('mce_preload_check();', 250);
return;
}
mce_init_form();
}
function mce_init_form() {
jQuery(document).ready(function ($) {
var options = { errorClass: 'mce_inline_error', errorElement: 'div', onkeyup: function () { }, onfocusout: function () { }, onblur: function () { } };
var mce_validator = $("#mc-embedded-subscribe-form").validate(options);
$("#mc-embedded-subscribe-form").unbind('submit'); //remove the validator so we can get into beforeSubmit on the ajaxform, which then calls the validator
options = { url: 'http://gramma.us1.list-manage.com/subscribe/post-json?u=64d2cf63fb98f334f406892db&id=f3181fb3be&c=?', type: 'GET', dataType: 'json', contentType: "application/json; charset=utf-8",
beforeSubmit: function () {
$('#mce_tmp_error_msg').remove();
$('.datefield', '#mc_embed_signup').each(
function () {
var txt = 'filled';
var fields = new Array();
var i = 0;
$(':text', this).each(
function () {
fields[i] = this;
i++;
});
$(':hidden', this).each(
function () {
if (fields.length == 2) fields[2] = { 'value': 1970 }; //trick birthdays into having years
if (fields[0].value == 'MM' && fields[1].value == 'DD' && fields[2].value == 'YYYY') {
this.value = '';
} else if (fields[0].value == '' && fields[1].value == '' && fields[2].value == '') {
this.value = '';
} else {
this.value = fields[0].value + '/' + fields[1].value + '/' + fields[2].value;
}
});
});
return mce_validator.form();
},
success: mce_success_cb
};
$('#mc-embedded-subscribe-form').ajaxForm(options);
});
}
function mce_success_cb(resp) {
$('#mce-success-response').hide();
$('#mce-error-response').hide();
if (resp.result == "success") {
$('#mce-' + resp.result + '-response').show();
$('#mce-' + resp.result + '-response').html(resp.msg);
$('#mc-embedded-subscribe-form').each(function () {
this.reset();
});
} else {
var index = -1;
var msg;
try {
var parts = resp.msg.split(' - ', 2);
if (parts[1] == undefined) {
msg = resp.msg;
} else {
i = parseInt(parts[0]);
if (i.toString() == parts[0]) {
index = parts[0];
msg = parts[1];
} else {
index = -1;
msg = resp.msg;
}
}
} catch (e) {
index = -1;
msg = resp.msg;
}
try {
if (index == -1) {
$('#mce-' + resp.result + '-response').show();
$('#mce-' + resp.result + '-response').html(msg);
} else {
err_id = 'mce_tmp_error_msg';
html = '<div id="' + err_id + '" style="' + err_style + '"> ' + msg + '</div>';
var input_id = '#mc_embed_signup';
var f = $(input_id);
if (ftypes[index] == 'address') {
input_id = '#mce-' + fnames[index] + '-addr1';
f = $(input_id).parent().parent().get(0);
} else if (ftypes[index] == 'date') {
input_id = '#mce-' + fnames[index] + '-month';
f = $(input_id).parent().parent().get(0);
} else {
input_id = '#mce-' + fnames[index];
f = $().parent(input_id).get(0);
}
if (f) {
$(f).append(html);
$(input_id).focus();
} else {
$('#mce-' + resp.result + '-response').show();
$('#mce-' + resp.result + '-response').html(msg);
}
}
} catch (e) {
$('#mce-' + resp.result + '-response').show();
$('#mce-' + resp.result + '-response').html(msg);
}
}
}
</script>
<!--End mc_embed_signup-->
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
我发现最简洁的方法是从您的页面中删除邮件黑猩猩表单,然后只使用一个与邮件黑猩猩具有相同字段的 asp.net 表单。然后,在按钮单击事件上执行如下操作:
然后,在 MailChimp.aspx 上,创建一个包含邮件 chimp 操作 URL 的表单,并填写如下字段:
然后在页面上添加一些 javascript,以便在页面加载时提交表单。
I find the tidiest way to do this is to remove the mail chimp form from your page, and just have an asp.net form with the same fields as what the mail chimp had. Then, on the button click event do something like:
Then, on MailChimp.aspx, have a form with the mail chimp action URL, and fill the fields like so:
Then have some javascript on the page to submit the form on page load.
不幸的是,这些方法都不是非常漂亮。
None of these methods is very pretty unfortunately.
您还可以从回发直接重定向到 mailchimp,为新订阅提供 subscribe=1:
You can also redirect directly to mailchimp from your postback, prividing the subscribe=1 for a new subscription:
这可能已经晚了,但我刚刚在我的 asp.net 网站上运行了嵌入式 mailchimp 代码。
我删除了表单标签,并将其输入按钮替换为:
它非常适合我。 (我应该注意我使用的是嵌入代码的非 JavaScript 版本)。
This may be late, but I just got the embedded mailchimp code working on my asp.net website.
I removed the form tags, and replaced their input button with this:
It works perfectly for me. (I should note I was using the non-javascript version of the embedded code).