c# - 从部分视图发布表单时返回的内容
问题描述
我是 MVC 新手,正在尝试实现联系页面。我为联系人部分创建了一个部分视图,并在我的索引页面上添加了这一行
@Html.Partial("_Contact")
当我的表单提交时,我的代码将执行,当表单无效时,我必须返回一些东西。我的问题是我必须返回什么才能使其正常工作。我想将我的模型返回到我的联系人部分视图,但我仍然必须显示我的索引页面,因为联系人部分显示在那里。还是我看错了?
这是邮政编码:
[ValidateAntiForgeryToken]
public IActionResult _Contact(EmailFormModel model)
{
if (ModelState.IsValid)
{
var path = _hostingEnvironment.WebRootPath;
string html = System.IO.File.ReadAllText(path);
var message = new MailMessage();
var templatePath = path + _configuration.GetSection("Email.PathToHtmlTemplate").Value;
var smtpHost = _configuration.GetSection("Email.Smtp.Host").Value;
var smtpPort = Convert.ToInt32(_configuration.GetSection("Email.Smtp.Port").Value);
var smtpUser = _configuration.GetSection("Email.Smtp.UserName").Value;
var smtpPass = _configuration.GetSection("Email.Smtp.Password").Value;
var from = _configuration.GetSection("Email.From").Value;
var to = _configuration.GetSection("Email.To").Value;
var cc = _configuration.GetSection("Email.Cc").Value;
var bcc = _configuration.GetSection("Email.Bcc").Value;
var subject = _configuration.GetSection("Email.Subject").Value;
var dic = new Dictionary<string, string>()
{
{ "{{NAME}}", model.Name },
{ "{{TEL}}", model.Telephone },
{ "{{EMAIL}}", model.Email },
{ "{{MESSAGE}}", model.Message },
};
dic.ForEach(x => html = html.Replace(x.Key, x.Value));
foreach (var t in to.Split(';'))
{
message.To.Add(new MailAddress(t));
}
foreach (var t in cc.Split(';'))
{
message.CC.Add(new MailAddress(t));
}
foreach (var t in bcc.Split(';'))
{
message.Bcc.Add(new MailAddress(t));
}
message.From = new MailAddress(from);
message.Subject = subject;
message.Body = html;
message.IsBodyHtml = true;
using (var smtp = new SmtpClient())
{
var credential = new NetworkCredential
{
UserName = smtpUser,
Password = smtpPass
};
smtp.Credentials = credential;
smtp.Host = smtpHost;
smtp.Port = smtpPort;
smtp.Send(message);
return View("EmailSent");
}
}
return View(model);
}
索引视图:
@{
ViewData["Title"] = "Home Page";
}
...
@Html.Partial("_Contact")
联系人视图:
@model EmailFormModel;
@{
ViewData["Title"] = "Contact";
}
<form asp-controller="Home" asp-action="_Contact" method="post" class="form-horizontal" role="form">
<!-- Contact Page Section Start -->
<div id="contact" class="contact-page-sec pt-100 pb-100">
<div class="container">
<row>
<div class="contact-page-sec">
<div class="sec-title">
<h1>Contacteer ons</h1>
<div class="border-shape"></div>
</div>
</div>
</row>
<div class="row">
<div class="col-md-4">
<div class="contact-info">
<div class="contact-info-item">
<div class="contact-info-icon">
<img src="img/icon/phone.png" alt="" />
</div>
<div class="contact-info-text">
<h2>Telefoon</h2>
<span>
<a href='tel:+3245798689'>+(32) 496 56 53 13</a>
</span>
</div>
</div>
</div>
<div class="contact-info">
<div class="contact-info-item">
<div class="contact-info-icon">
<img src="img/icon/envelope.png" alt="" />
</div>
<div class="contact-info-text">
<h2>e-mail</h2>
<span>
<a href='mailto:info@vloerwerken-krekelbergh.be'>info@vloerwerken-krekelbergh.be</a>
</span>
</div>
</div>
</div>
<div class="contact-info">
<div class="contact-info-item">
<div class="contact-info-icon">
<img src="img/icon/map-marker.png" alt="" />
</div>
<div class="contact-info-text">
<h2>Adres</h2>
<span>Engelstraat 60</span>
<span>8211 Aartrijke, België</span>
</div>
</div>
</div>
<div class="social-profile">
<ul>
<li>
<a href="https://www.facebook.com/vloerwerken-krekelbergh-228041574489932/">
<i class="fa fa-facebook"></i>
</a>
</li>
</ul>
</div>
</div>
<div class="col-md-8">
<div class="contact-field">
<h2>Schrijf uw bericht</h2>
<div class="col-md-6 col-sm-6 col-xs-12">
<div class="single-input-field">
<input asp-for="Name" class="form-control" />
<span asp-validation-for="Name" class="text-danger"></span>
</div>
</div>
<div class="col-md-6 col-sm-6 col-xs-12">
<div class="single-input-field">
<input asp-for="Email" class="form-control" type="email"/>
<span asp-validation-for="Email" class="text-danger"></span>
</div>
</div>
<div class="col-md-6 col-sm-6 col-xs-12">
<div class="single-input-field">
<input asp-for="Telephone" class="form-control" />
<span asp-validation-for="Telephone" class="text-danger"></span>
</div>
</div>
<div class="col-md-12 message-input">
<div class="single-input-field">
<textarea asp-for="Message" class="form-control"></textarea>
<span asp-validation-for="Message" class="text-danger"></span>
</div>
</div>
<div class="single-input-fieldsbtn" style="clear: both;">
<input id="submitBtn" value="Verstuur" type="submit">
</div>
<div id="info"></div>
</div>
</div>
</div>
</div>
</div>
<!-- Contact Page Section End -->
</form>
解决方案
推荐阅读
- python - 如何在 Django 中处理来自 HTML 的使用“Post”或“GET”方法提交的文本?
- matlab - 在 Matlab 中随机连接 wav 文件
- javascript - 使用 jquery 动态更改下拉列表的内容
- reactjs - 没有重载匹配此调用。React 中的 Typescript 和 StyledComponents
- scala - Scala spark - 从行中设置的列构造结构数组
- c# - 在电子邮件中包含授权标头
- php - 数组不会打印行数据
- python - Pandas 无法正常工作,即使我安装了它
- python - PHP exec不执行exe文件
- reactjs - 如何在没有组件安装的情况下在具有 setState 的函数内部调用函数?