Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET MVC邀请系统_C#_Asp.net Mvc - Fatal编程技术网

C# ASP.NET MVC邀请系统

C# ASP.NET MVC邀请系统,c#,asp.net-mvc,C#,Asp.net Mvc,我需要在我的网站上支持邀请,以便会员可以邀请朋友加入 有没有现成的组件可以为我做到这一点,而不是从头开始?我不知道有任何类似于ASP.NET MVC的“即插即用”系统,但您可以自己轻松实现基本的系统 创建一个控制器,如下所示: using System.Net.Mail; namespace InTouch.Controllers { public class YourApp.Controllers { public ActionResult Index() {

我需要在我的网站上支持邀请,以便会员可以邀请朋友加入


有没有现成的组件可以为我做到这一点,而不是从头开始?

我不知道有任何类似于ASP.NET MVC的“即插即用”系统,但您可以自己轻松实现基本的系统

创建一个控制器,如下所示:

using System.Net.Mail;

namespace InTouch.Controllers
{

public class YourApp.Controllers
{
    public ActionResult Index()
    {
        return View();
    }

    [AcceptVerbs("POST")]
    public ActionResult Index(string fromname, string fromemail, string toname, string toemail)
  {
  const string emailregex = @"\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*";
  var result = false;
  ViewData["fromname"] = fromname;
  ViewData["fromemail"] = fromemail;
  ViewData["toname"] = toname;
  ViewData["toemail"] = toemail;

  if (string.IsNullOrEmpty(fromname)) ViewData.ModelState.AddModelError("name", "Please enter your name!");
  if (string.IsNullOrEmpty(fromemail)) ViewData.ModelState.AddModelError("email", "Please enter your e-mail!");
  if (!string.IsNullOrEmpty(fromemail) && !Regex.IsMatch(fromemail, emailregex)) ViewData.ModelState.AddModelError("email", "Please enter your e-mail!");
  if (string.IsNullOrEmpty(toname)) ViewData.ModelState.AddModelError("comments", "Please enter a message!");
  if (!string.IsNullOrEmpty(toemail) && !Regex.IsMatch(toemail, emailregex)) ViewData.ModelState.AddModelError("email", "Please enter a valid recipient e-mail!");
  if (!ViewData.ModelState.IsValid) return View();

  var message = new MailMessage(fromemail, toemail)
        {
            Subject = "You have been invited to MyNewApp by " + fromname + "!",
            Body = fromname + " wants to invite you. Click my link httpwwwblahblah to join them!"
        };

        SmtpClient smtp = new SmtpClient();
        try
        {
            smtp.Send(message);
            result = true;
        }
        catch { }           

  return View("Thankyou");
    }


}
}
然后您只需要表单的视图。类似的东西,根据您的口味设计:

<form id="invite" method="post">
<fieldset><legend>Invite a friend!</legend>
<%=Html.ValidationMessage("fromname")%>
<%=Html.ValidationMessage("fromemail")%>
<%=Html.ValidationMessage("toname")%>
<%=Html.ValidationMessage("toemail")%>
Your Name: <input type="text" id="fromname" name="fromname" class="required" value="<%= ViewData["fromname"] ?? "" %>" /><br />
Your Email: <input type="text" id="fromemail" name="fromemail" class="required" value="<%= ViewData["fromemail"] ?? "" %>" /><br />
Friend's Name: <input type="text" id="toname" name="toname" class="required" value="<%= ViewData["toname"] ?? "" %>" /><br />
Friend's Email: <input type="text" id="toemail" name="toemail" class="required" value="<%= ViewData["toemail"] ?? "" %>" /><br />
<input type="submit" id="action" name="action" value="Submit" />
</fieldset></form>

邀请一个朋友!
您的姓名:
您的电子邮件:
朋友的名字:
朋友的电子邮件:

应该在不使应用程序的其余部分复杂化的情况下完成此操作

首先,有一些提供程序可以很好地与Web服务和其他通信方法交互。尝试搜索适合您需要的邀请API。我不会像其他人建议的那样设置一个“电子邮件邀请”控制器,当你自己发送邮件时会有“危险”

假设你正在开发的页面有很多访问者,比如一次有2000个访问者,他们都想邀请10个朋友,现在有20000个邀请。如果你要从你的服务器请求20000个SMTP发送,很多服务器会将你列入黑名单,现在这不好

因此,您需要创建一个更高级的邀请流程,您可以将所有邀请存储在数据库中,并使用调度程序每分钟发送10封邮件,或者使用第三方提供商来处理大量邀请

永远不要想太小


如果你想通过facebook、myspace、twitter或任何你可能想到的方式进行邀请,有一些API并不难管理。

虽然你所说的肯定是正确的,但我提供的示例旨在作为一个非常基本、简单的示例来启动和运行。用户可以从那里自由地扩展它。附言:通常情况下,考虑得太小,需要晚些修改,要比考虑得太大,永远完成不了任何事情要好;)我不介意,考虑小问题会导致设计糟糕的软件。考虑大和现实会导致可扩展的软件。如果你最终在一个拥有无限资源和固定预算的商业环境中工作,那么是的,这是一个很好的方法。大多数人没有一个支持这种理想主义方法的奢侈环境,需要“完成事情”的严酷现实很快变得显而易见。也许我们应该在metastackoverflow上继续:PHi All,真的我需要两个答案,我需要一些简单的东西,如果社区成员增加,不要制造问题