我正在尝试实现以下方案。 创建一个网页,用户可以在评论文本区域中输入他/她的评论,然后单击“提交”按钮,该网页应向客户的电子邮件地址发送一封电子邮件,然后新的视图应加载显示用户建议的消息已发送给客户。
在我的asp.Net MVC应用程序中,我创建了一个控件,并添加了一个名为[SuggestionMessage“的[HttpGet]和[HttpPost]方法。 Get方法加载视图以显示建议的形式。问题是在“提交”按钮上,单击我的httpPost方法未实现!
[HttpGet]
public ActionResult SuggestionMessage()
{
//this view will load the suggestion form
return View();
}
[HttpPost]
public ActionResult SuggestionMessage(string content)
{
//Code to send email
//below view will display the message that the user's
//suggestion have been sent to client.
return View();
}
这是我的建议表
@{
ViewBag.Title = "Suggestions";
}
<!DOCTYPE html>
<html lang="en">
<head>
<title>Suggestions</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/css/bootstrap.min.css">
<link href="https://fonts.googleapis.com/css?family=Montserrat" rel="stylesheet">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/js/bootstrap.min.js"></script>
<style>
body {
font: 20px Montserrat, sans-serif;
line-height: 1.8;
color: #000000;
}
p {
font-size: 16px;
}
.margin {
margin-bottom: 25px;
}
.margin-1 {
margin-bottom: 5px;
}
.bg-1 {
background-color: #23F0E4; /* Aqua */
color: #ffffff;
}
.container-fluid {
padding-top: 70px;
padding-bottom: 70px;
padding-left: 0px;
padding-right: 0px;
}
</style>
</head>
<body>
<div class="container-fluid">
@using (Html.BeginForm())
{
<form>
<div class="form-group">
<label for="comment">Comment:</label>
<textarea class="form-control" rows="5" id="comment"></textarea>
</div>
<div>
<button class="btn-primary" id="btnSubmit">Submit</button>
</div>
</form>
}
</div>
</body>
</html>
答案 0 :(得分:1)
您的代码指示两种形式,这可能与“提交”按钮弄混了,并且正在提交没有任何操作属性的额外表单标签;
@using (Html.BeginForm())
{
<form>
...
</form>
}
别忘了在表单字段中添加名称属性,我注意到textarea中不包含名称属性,使用;
<textarea name="content" class="form-control" rows="5" id="comment"></textarea>
您的按钮也没有type = submit属性,以确保它是用于提交,使用;
<button type="Submit" class="btn-primary" id="btnSubmit">Submit</button>
@Html.BeginForm
已经用<form>
标签将其内部的元素括起来,并且会自动发布到相同的控制器和动作名称,因此只需使用;
// just remove the extra form tag inside Html.BeginForm()
@using (Html.BeginForm())
{
<div class="form-group">
label for="comment">Comment:</label>
<textarea name="content" class="form-control" rows="5" id="comment"></textarea>
</div>
<div>
<button type="Submit" class="btn-primary" id="btnSubmit">Submit</button>
</div>
}