[英]Is it possible to have multiple MVC routes point to the same controller/view?
[英]Data not moving view to controller, I have tried with all possible solutions
当我按下“保存”按钮时,所有字段{email,name ..}都为null,这就是代码无法正常工作的原因。 只需要从html文本框中获取数据并在控制器块中使用值即可。
视图: - -
@model RenderCshtml.Models.ContactModel
@{
ViewBag.Title = "Contact";
Layout = "~/Views/Shared/_TemplateView.cshtml";
}
@using (Html.BeginForm("Contact", "Home", FormMethod.Post, new { id = "ContactForm", @class = "navbar-right" }))
{
<section id="MainContents" style="padding-top:50px">
@*<script src="~Content/ContactUs/ContactValidation.js"></script>*@
<script src="~Content/ContactUs/lib/jquery-validation/dist/jquery.validate.min.js"></script>
<script src="~Content/ContactUs/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"></script>
<link rel="stylesheet" href="~Content/ContactUs/lib/bootstrap/dist/css/bootstrap.min.css" />
<div>
<div class="col-md-6">
<div>
@if (ViewBag.Message == null)
{
<div>
<form method="post" id = "ContactForm">
<div class="form-group">
<label asp-for="Name">Name</label>
<input asp-for="Name" class="form-control"/>
<span asp-validation-for="Name"
class="text-muted"></span>
</div>
<div class="form-group">
<label asp-for="Email">Email</label>
<input asp-for="Email" class="form-control" />
<span asp-validation-for="Email"
class="text-muted"></span>
</div>
<div class="form-group">
<label asp-for="Subject">Subject</label>
<input asp-for="Subject" class="form-control" />
<span asp-validation-for="Subject"
class="text-muted"></span>
</div>
<div class="form-group">
<label asp-for="Message">Message</label>
<textarea rows="5" cols="15"
asp-for="Message" class="form-control"></textarea>
<span asp-validation-for="Message"
class="text-muted"></span>
</div>
<div>
<button type="submit"
class="btn btn-success">
Send
</button>
</div>
</form>
</div>
}
</div>
<div>
<div>
@if (ViewBag.Message != null)
{
<div>@ViewBag.Message</div>
}
</div>
</div>
</div>
</div>
</section>
控制器:----
public ActionResult Contact()
{
return View(new ContactModel());
}
[HttpPost]
public ActionResult Contact(ContactModel vm)
{
if (ModelState.IsValid)
{
try
{
MailMessage msz = new MailMessage();
msz.From = new MailAddress(vm.Email);//Email which you are getting
//from contact us page
msz.To.Add("dinesh.joshi1794@gmail.com");//Where mail will be sent
msz.Subject = vm.Subject;
msz.Body = vm.Message;
SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.gmail.com";
smtp.Port = 587;
smtp.Credentials = new System.Net.NetworkCredential
("securedj94@gmail.com", "!l0veum0m");
smtp.EnableSsl = true;
smtp.Send(msz);
ModelState.Clear();
ViewBag.Message = "Thank you for Contacting us ";
}
catch (Exception ex)
{
ModelState.Clear();
ViewBag.Message = $" Sorry we are facing Problem here {ex.Message}";
}
}
return View();
}
模型: - - -
public class ContactModel
{
public string Name { get; set; }
public string Email { get; set; }
public string Subject { get; set; }
public string Message { get; set; }
}
如果您使用的是asp.net mvc4或更高版本,则可以使用该版本,但您未指定使用哪个版本,因此请务必将其发布,以防万一
而不是像这样使用输入:
<input asp-for="Name" class="form-control"/>
您可以使用textboxfor,因为它将链接到模型并发布到控制器
这是一个用于输入名称的文本框的示例,您可以对其他输入框进行相同的操作
@Html.TextBoxfor(m => n.Name, new { @class = "form-control" })
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.