asp mvc用户控件

时间:2010-11-26 21:49:04

标签: asp.net-mvc user-controls

我想写用户控件来发送电子邮件。

我写了那个控件:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
<form action="" method="post">
<div class="box">
    <div class="box-header">
        Rejestracja</div>
    <div class="box-content">
        <div>
            Imię
        </div>
        <div>
            <input name="firstname" type="text" />
        </div>
        <div>
            Nazwisko
        </div>
        <div>
            <input name="lastname" type="text" />
        </div>
        <div>
            Email
        </div>
        <div>
            <input name="email" type="text" />
        </div>
        <div>
            Ulica nr domu mieszkania
        </div>
        <div>
            <input name="street" type="text" />
        </div>
    </div>
    <div class="box-info">
        Wypełnij formularz rejestracyjny i dołącz do klubu Oriflame.
    </div>
</div>
<div style="clear: both;">
</div>
</form>

我将此控件放在母版页中:

<% Html.RenderPartial("Kontakt"); %>

该控件名为:kontakt.aspx“,它位于共享文件夹

我的问题是我必须在编写代码时发送电子邮件。我在myst中设置的控件是什么动作。

此控件位于所有网站上。

此致

3 个答案:

答案 0 :(得分:1)

表单需要发布到设置为路由到控制器操作的URL。这可能是当前页面的Url或不同的Url。

在您的控制器中,您需要一个接受表单字段的方法。这可以是FormCollection对象或强类型模型,其属性映射到表单名称。

[HttpPost]
public ActionResult Foo(FormCollection form)
{
    .. use the form collection to construct your email ...          
}

如果您使用强类型视图,而不是自己构建HTML输入,则可以执行以下操作:

<%= Html.TextBoxFor(x => x.FirstName) %>

在您的控制器操作中,您可以使用模型而不是FormCollection:

[HttpPost]
public ActionResult Foo(KontaktModel details)
{
    .. use the details object to construct your email ...          
}

我建议您查看http://asp.net/mvc上的教程以及NerdDinner教程。

答案 1 :(得分:0)

您必须创建某种将接收表单数据的Controller。您可以从服务器(从控制器或您选择发送它的任何内容)发送这些电子邮件。

答案 2 :(得分:0)

以控制器方式编写您的电子邮件创建和发送代码。然后你可以从这个Kontakt局部视图中调用它:

<% using (Html.BeginForm("SendMail", "Mail")) { %>

其中SendMail是方法,Mail是控制器的名称。

public ActionResult SendMail()
{        
     //build your mail objects and send as needed.
     return View();
}