我来自网络表单,对MVC来说还是一个新手。我想创建一个联系表单,只需通过电子邮件向我发送联系信息,
e.g:
我需要收集大约十几个不同的信息领域。
在网络表单中,只需拨打TextBox.Text
除了必须传递一个长屁股参数之外,构建电子邮件正文的最佳方法是什么:
[HttpPost]
Public ActionResult Contact(string firstName, string lastName, string Email, int Age, string Company, ...)
{
// ...
}
提前谢谢。
答案 0 :(得分:3)
[HttpPost]
Public ActionResult Contact(EmailMessage message)
{
// ...
}
,您的Model对象如下所示:
public class EmailMessage
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
....
}
如果您的表单元素与EmailMessage模型匹配,您可以自动将其绑定到您的操作方法
<% using (Html.BeginForm()) { %>
First Name: <input type="text" id="FirstName" />
Last Name: <input type="text" id="LastName" />
Email <input type="text" id="Email" />
....
<% } %>
您还可以通过使用[DisplayName]和其他有用的MVC属性修饰模型属性来制作这个真棒。
public class EmailMessage
{
[DisplayName("First Name")]
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
....
}
<% using (Html.BeginForm()) { %>
<%: LabelFor(m => m.FirstName) %><%: EditorFor(m => m.FirstName) %>
<%: LabelFor(m => m.LastName) %><%: EditorFor(m => m.LastName) %>
<%: LabelFor(m => m.Email) %><%: EditorFor(m => m.Email) %>
<% } %>
答案 1 :(得分:1)
使用强类型视图,并使用HTML帮助程序方法构建表单。您可以在操作方法的模型中使用表单中的数据。
答案 2 :(得分:0)
替代方法(MVC 1)是接受FormCollection
对象并从中读取值,这可能更容易应用于您已经获得的值。
但是我会按照ThatSteveGuy的建议去做正确的MVC 2。
答案 3 :(得分:0)
您可以考虑使用MvcMailer NuGet - 它将大大简化您的生活。请参阅http://nuget.org/Packages/Search?packageType=Packages&searchCategory=All+Categories&searchTerm=mvcmailer处的NuGet包和https://github.com/smsohan/MvcMailer/wiki/MvcMailer-Step-by-Step-Guide
处的项目文档希望它有所帮助!