ASP.NET MVC Пригласительный систем - PullRequest
2 голосов
/ 12 января 2010

Мне нужно поддержать приглашение на моем ASP.NET MVC сайте, чтобы участники могли приглашать друзей присоединиться.

Существует ли какой-либо готовый компонент, который может сделать это для меня вместо того, чтобы начинать с нуля?

Ответы [ 2 ]

3 голосов
/ 12 января 2010

Я не знаю ни одной подобной системы для ASP.NET MVC, но вы все равно можете легко реализовать базовую самостоятельно.

Создайте InviteController примерно так:

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>

Нужно сделать свое дело, не усложняя остальную часть вашего приложения!

0 голосов
/ 12 января 2010

Прежде всего, есть провайдеры для этого, которые очень хорошо взаимодействуют с WebServices и другими методами связи. Попробуйте поискать Пригласить API, которое соответствует вашим потребностям. Я бы не стал настраивать контроллер «Пригласить по электронной почте», как предполагают другие, есть «опасность», когда вы отправляете почту самостоятельно.

Допустим, что страница, которую вы разрабатываете, заглядывает и имеет много посетителей, например, 2000 посетителей одновременно, и все они хотят пригласить 10 друзей, а теперь это 20 000 приглашений. Если бы вы запросили 20 000 отправок SMTP с вашего сервера, многие серверы занесут вас в черный список, теперь это нехорошо.

Итак, вам нужно создать немного больше процесса предварительных приглашений, вы можете сохранить все приглашения в базе данных и использовать планировщик для отправки 10 писем в минуту, либо использовать стороннего поставщика, который может обрабатывать большое количество приглашений.

Никогда не думай о малом

Если вы хотите пригласить через Facebook, MySpace, Twitter или что-то еще, о чем вы можете подумать, для этого есть API, которыми нетрудно управлять.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...