【发布时间】:2012-12-31 21:49:10
【问题描述】:
在一个 ASP.NET 页面上,我有一个 DataTable 和一个投资者列表。客户希望添加一个功能,允许他们的用户从该列表中选择个人投资者,并拥有一个电子邮件按钮,该按钮将打开一个电子邮件页面并使用投资者电子邮件填充密件抄送。到目前为止,我已经实现了复选框,并且我成功地通过了复选框并仅获取了选中框的电子邮件。从这一点开始,我完全不知道如何将该日期发送到下一页并让它们自动填写密件抄送。到目前为止,这是我的代码:
<a onclick="grabEmail()" href="/Settings/EmailSelect" class="button blue" >Email Selected</a>
...
...
...
<script type="text/javascript">
function grabEmail() {
var emails = new Array();
var $checked = $('[@id=investoremails:checked');
$checked.each(function () {
emails.push($(this).val());
alert($(this).val()); //This was just to check to make sure emails
//were grabbed
}
);
$.ajax({
url: '/Settings/EmailSelect/',
type: "POST",
data: emails,
traditional: true,
});
}
然后,在 EmailSelect 页面上...
$(document).ready(function() {
$.ajax({
type: "GET",
url: "/Settings/EmailSelect",
error: function (xhr, status, error) {
$("#results").html("An error occurred: " + error).addClass("notification error");
return false;
},
success: function(response) {
if (response != null) {
if (!response.Successful) {
$("#results").html("An error occurred: " + response.Exception).addClass("notification error");
return false;
} else {
$("#bcc").val(response.ReturnVal);
}
}
}
});
});
对于控制器..
public ActionResult EmailSelect(string[] emails)
{
ViewData["Selected"] = emails;
return View();
}
我们在这个程序中有一些类似的功能,投资者可以成为用户创建的组的一部分,并且还有另一个电子邮件页面,用户可以在其中选择要发送电子邮件的特定组,我试图以此为基础解决这个问题那个(即使它们本质上是不同的..)。如果有人能指出我正确的方向,那就太好了!
【问题讨论】:
-
您通过
JavaScript完成所有这些工作是否有令人信服的理由?我将在服务器上而不是在客户端上完成几乎所有这些工作。除了发回服务器之外,该按钮不应该做任何其他事情,服务器可以执行重定向。 -
您认为您要传递的平均数据量以及最大数据量是多少?如果它足够低,我会把它放在一个查询字符串中,但是如果你需要支持数百个电子邮件地址,那不是一个实际的选择。
-
我向一位高级开发人员(在办公室外工作)寻求建议,他提出了“类似的建议”。至于电子邮件的数量,最多可能是几十个,所以我不相信查询字符串会起作用
-
以防万一您不知道,您当前正在通过查询字符串发送数据,它只是在异步调用的
post请求中,因此它永远不会在浏览器的网址。
标签: javascript c# asp.net-mvc asp.net-ajax dom-events