【问题标题】:Send Email using MVC Razor View使用 MVC Razor 视图发送电子邮件
【发布时间】:2013-08-06 22:37:25
【问题描述】:

我是 MVC 的初学者,必须在 MVC 应用程序中实现发送邮件的功能。

下面是我的代码。

查看:

@using (@Html.BeginForm())
{

@Html.TextBoxFor(m => m.EmailID)

<input type="submit" name="name" value="SendMail" />
@{ Html.RenderAction("SendMail", "PagesController");

}

控制器代码:PagesController

    [HttpPost]
    public ActionResult SendMail(EmailModel model)
    {
        MailMessage msg = new MailMessage();

        msg.From = new MailAddress("abc@abc.com");
        msg.To.Add(model.EmailID);
        msg.Subject = "Welcome To REBAR Mobile Showcase";
        msg.Body = "Hi," + Environment.NewLine + @"Welcome to REBAR Mobile Showcase. Please click on the below link : https://ciouishowcase.accenture.com/mobile/m"
            + Environment.NewLine + "Regards," + Environment.NewLine + "CIO Design Agency";
        msg.Priority = MailPriority.Normal;

        SmtpClient client = new SmtpClient();

        client.Credentials = new NetworkCredential("abc", "passwrod", "Dir");
        client.Host = "email.abc.com";
        client.Port = 587;
        client.DeliveryMethod = SmtpDeliveryMethod.Network;
        client.EnableSsl = true;
        client.UseDefaultCredentials = true;
        client.Send(msg);
        return View();
    }

型号:EmailModel

public class EmailModel
{
    public string EmailID { get; set; }
}

我有几个问题:

  1. 如何在点击发送链接按钮时调用此方法。

  2. 我也想在文本框和发送邮件链接上应用样式。我应该如何使用这些类型的控件?

@Html.TextBoxFor(m => m.EmailID)

  1. 我是否遵循 MVC 标准?如果没有,在哪里。

【问题讨论】:

  • 欢迎来到 SO!通常,如果您有不相关的问题,在您的情况下,一个关于 MVC 操作,另一个关于样式,您应该将您的问题分解为多个问题。这使得社区更容易回答。

标签: c# asp.net-mvc razor


【解决方案1】:
  1. 在您看来,您不需要 RenderAction 调用,但您需要将正确的操作传递给您的 begin-form

  2. 应用样式:您可以传入一个动态对象,该对象具有您想要的元素属性。在这种情况下,我添加了一个类属性(然后您必须使用 CSS 设置样式)

    @using (@Html.BeginForm("SendMail", "Pages"))
    {    
        @Html.TextBoxFor(m => m.EmailID, new() {@class="somecssclass"})
    
        <input type="submit" name="name" value="SendMail" />
    }
    

【讨论】:

    【解决方案2】:

    你不需要这个:

    @{ Html.RenderAction("SendMail", "PagesController");
    
    }
    

    只需将BeginForm 方法更改为:

    @Html.BeginForm("SendMail", "Pages", FormMethod.Post)
    

    这将强制 submit 按钮到 POST 到您在控制器中描述的方法。它将控制器名称Pages 匹配到PagesController,然后匹配动作名称加上方法类型并找到:

    [HttpPost]
    public ActionResult SendMail ...
    

    就应用样式而言,这是通过基本的 HTML 和 CSS 完成的。你可以使用类似的东西:

    form input[type="text"] {
    
    }
    

    例如设置text 输入的样式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-07
      • 1970-01-01
      • 2011-02-14
      • 1970-01-01
      • 2020-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多