似乎无法将表单值(在视图中)获取到控制器
Can't seem to get form values (in view) to the controller
我这里有2位代码。
这是我目前的控制器:
using System;
using System.Net.Mail;
using System.Web.Mvc;
using WebMatrix.Data;
namespace Best_prototype_01.Controllers
{
public class RecrutaController : Controller
{
public ActionResult Index()
{
return View();
}
protected void btnSubmit_Click(object sender, EventArgs e)
{
try
{
MailMessage Msg = new MailMessage();
// Sender e-mail address.
Msg.From = new MailAddress(txtEmail.Text);
// Recipient e-mail address.
Msg.To.Add("administrator@aspdotnet-suresh.com");
Msg.Subject = txtSubject.Text;
Msg.Body = txtMessage.Text;
// your remote SMTP server IP.
SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.gmail.com";
smtp.Port = 587;
smtp.Credentials = new System.Net.NetworkCredential("yourgmailemail@gmail.com", "yourpassword");
smtp.EnableSsl = true;
smtp.Send(Msg);
//Msg = null;
lbltxt.Text = "Thanks for Contact us";
// Clear the textbox valuess
txtName.Text = "";
txtSubject.Text = "";
txtMessage.Text = "";
txtEmail.Text = "";
}
catch (Exception ex)
{
Console.WriteLine("{0} Exception caught.", ex);
}
}
}
}
这是据称与之相关的视图(无论如何重要的部分):
<form id="form1" >
<div>
<table cellspacing="2" cellpadding="2" border="0">
<tr><td></td><td><b>Contact Us Form</b></td></tr>
<tr><td><b>Name</b></td><td><asp:TextBox ID="txtName" /></td></tr>
<tr><td><b>Email</b></td><td><asp:TextBox ID="txtEmail" /></td></tr>
<tr><td><b>Subject</b></td><td><asp:TextBox ID="txtSubject" /></td></tr>
<tr><td valign="top"><b>Message</b></td><td> <asp:TextBox ID="txtMessage" Rows="5" Columns="40" TextMode="MultiLine" /></td></tr>
<tr><td></td><td><asp:button ID="btnSubmit" Text="Submit" onclick="btnSubmit_Click" CssClass="Button" /></td></tr>
<tr><td colspan="2" style=" color:red"><asp:Label ID="lbltxt" /></td></tr>
</table>
</div>
</form>
有人能指出我正确的方向吗?我不知道我做错了什么。
您的控制器中没有 xyz_Click()
事件。你拥有的就是所谓的ActionResult
s
你需要的是
a) 在您的视图中的表单中定义目标操作:
@using (Html.BeginForm("NameOfYour ActionResult", "NameOfController", FormMethod.Post, new { enctype = "multipart/form-data", @name = "someformname"}))
{
@Html.AntiForgeryToken()
//your form code with inputs, combos etc.
顺便说一下,AntiForgeryToken 可以防止跨站点发布。
然后在您的控制器中创建 ActionResult:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult NameOfYourActionResult(FormCollection fcol)
{
//your form evaluation goes here. All your form data is accessible through fcol, e.g. like this:
//Msg.From = new MailAddress(fcol["txtEmail"]);
除此之外:是的,请先了解 MVC 基础知识。它与 Web 窗体有很大不同。 w3schools.com/aspnet/mvc_intro.asp
我这里有2位代码。
这是我目前的控制器:
using System;
using System.Net.Mail;
using System.Web.Mvc;
using WebMatrix.Data;
namespace Best_prototype_01.Controllers
{
public class RecrutaController : Controller
{
public ActionResult Index()
{
return View();
}
protected void btnSubmit_Click(object sender, EventArgs e)
{
try
{
MailMessage Msg = new MailMessage();
// Sender e-mail address.
Msg.From = new MailAddress(txtEmail.Text);
// Recipient e-mail address.
Msg.To.Add("administrator@aspdotnet-suresh.com");
Msg.Subject = txtSubject.Text;
Msg.Body = txtMessage.Text;
// your remote SMTP server IP.
SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.gmail.com";
smtp.Port = 587;
smtp.Credentials = new System.Net.NetworkCredential("yourgmailemail@gmail.com", "yourpassword");
smtp.EnableSsl = true;
smtp.Send(Msg);
//Msg = null;
lbltxt.Text = "Thanks for Contact us";
// Clear the textbox valuess
txtName.Text = "";
txtSubject.Text = "";
txtMessage.Text = "";
txtEmail.Text = "";
}
catch (Exception ex)
{
Console.WriteLine("{0} Exception caught.", ex);
}
}
}
}
这是据称与之相关的视图(无论如何重要的部分):
<form id="form1" >
<div>
<table cellspacing="2" cellpadding="2" border="0">
<tr><td></td><td><b>Contact Us Form</b></td></tr>
<tr><td><b>Name</b></td><td><asp:TextBox ID="txtName" /></td></tr>
<tr><td><b>Email</b></td><td><asp:TextBox ID="txtEmail" /></td></tr>
<tr><td><b>Subject</b></td><td><asp:TextBox ID="txtSubject" /></td></tr>
<tr><td valign="top"><b>Message</b></td><td> <asp:TextBox ID="txtMessage" Rows="5" Columns="40" TextMode="MultiLine" /></td></tr>
<tr><td></td><td><asp:button ID="btnSubmit" Text="Submit" onclick="btnSubmit_Click" CssClass="Button" /></td></tr>
<tr><td colspan="2" style=" color:red"><asp:Label ID="lbltxt" /></td></tr>
</table>
</div>
</form>
有人能指出我正确的方向吗?我不知道我做错了什么。
您的控制器中没有 xyz_Click()
事件。你拥有的就是所谓的ActionResult
s
你需要的是
a) 在您的视图中的表单中定义目标操作:
@using (Html.BeginForm("NameOfYour ActionResult", "NameOfController", FormMethod.Post, new { enctype = "multipart/form-data", @name = "someformname"}))
{
@Html.AntiForgeryToken()
//your form code with inputs, combos etc.
顺便说一下,AntiForgeryToken 可以防止跨站点发布。
然后在您的控制器中创建 ActionResult:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult NameOfYourActionResult(FormCollection fcol)
{
//your form evaluation goes here. All your form data is accessible through fcol, e.g. like this:
//Msg.From = new MailAddress(fcol["txtEmail"]);
除此之外:是的,请先了解 MVC 基础知识。它与 Web 窗体有很大不同。 w3schools.com/aspnet/mvc_intro.asp