gpt4 book ai didi

c# - 验证不可见

转载 作者:太空宇宙 更新时间:2023-11-03 23:37:45 24 4
gpt4 key购买 nike

我有一个联系表,以便用户可以联系我。它是用 asp.net mvc 编写的,但问题是提交后没有填写任何文本框,没有对文本框进行验证。

这是我的表格:

@using (Html.BeginForm("contact","Home", FormMethod.Post, new { @enctype = "multipart/form-data" }))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)

<section id="contact" class="text-center">
<div class="container">
<div class="row">
<div class="col-md-12 wow fadeInDown" data-wow-delay="2000">
<h3>CONTACT Microrout.nl</h3>
</div>
<div class="col-md-2"></div>
<div class="col-md-8">

Microrout.nl
<br />frederik hendriklaan 253-b
<br />Den Haag
<br />0641697144


</div>
<div class="col-md-2"></div>
<hr />
<div class="form-group">

<div class="col-md-10">
@Html.TextBoxFor(m => m.FromName, new {placeholder = "Your Name", @class = "form-control" })
@Html.ValidationMessageFor(m => m.FromName)
</div>
</div>

<div class="form-group">

<div class="col-md-10">
@Html.TextBoxFor(m => m.subject, new {placeholder = "Subject of message", @class = "form-control" })
@Html.ValidationMessageFor(m => m.subject)
</div>
</div>

<div class="form-group">

<div class="col-md-10">
@Html.TextBoxFor(m => m.FromEmail, new {placeholder ="Your email", @class = "form-control" })
@Html.ValidationMessageFor(m => m.FromEmail)
</div>
</div>
<div class="form-group">

<div class="col-md-10">
@Html.TextAreaFor(m => m.Message, new {placeholder = "Your message", @class = "form-control" })
@Html.ValidationMessageFor(m => m.Message)
</div>
</div>
<div class="form-group">
<div class="col-md-3">
<input type="submit" value="SHOOT MESSAGE" class="form-control">
</div>
</div>
</div>
</div>
@*<div class="google_map">
<div id="map-canvas"></div>
</div>*@


</section>
}






</section>

这是我在 Controller 中的方法:

public ActionResult Contact()
{
ViewBag.Message = "Your contact page.";

return View();
}

[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Contact(EmailFormModel model)
{
string message2 = "There are a few errors";
if (ModelState.IsValid)
{




var body = "<p>Email From: {0} ({1})</p><p>Message:</p><p>{2}</p>";
var message = new MailMessage();
message.To.Add(new MailAddress("nengelen@online.nl")); //replace with valid value
message.Subject = model.subject;
message.Body = string.Format(body, model.FromName, model.FromEmail, model.Message);
message.IsBodyHtml = true;

using (var smtp = new SmtpClient())
{
await smtp.SendMailAsync(message);

}

message2 = "Thanks! We'll get back to you soon.";






//Response.Write("Error sending email: " + error.Message + "<br /> StackTrace: " + error.StackTrace);

//ViewBag.Message = "Thank you for contact us";
//return new RedirectToActionAnchor("Contact", "", "#contact");

}

if (Request.IsAjaxRequest())
{
return new JsonResult { Data = new { success = true, message = message2 } };
}

TempData["Message"] = message2;


return new RedirectResult(Url.Action("") + "#contact");
}

我现在是这样的:

public ActionResult Contact()
{
EmailFormModel model = TempData["EmailFormModel"] as EmailFormModel;
ViewBag.Message = "Your contact page.";


return View();
}

[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Contact(EmailFormModel model)
{
TempData["EmailFormModel"] = model;
string message2 = "There are a few errors";
if (ModelState.IsValid)
{




var body = "<p>Email From: {0} ({1})</p><p>Message:</p><p>{2}</p>";
var message = new MailMessage();
message.To.Add(new MailAddress("nengelen@online.nl")); //replace with valid value
message.Subject = model.subject;
message.Body = string.Format(body, model.FromName, model.FromEmail, model.Message);
message.IsBodyHtml = true;

using (var smtp = new SmtpClient())
{
await smtp.SendMailAsync(message);

}

return new RedirectResult(Url.Action("") + "#contact");
}

if (Request.IsAjaxRequest())
{
return new JsonResult { Data = new { succes = true, message = message2 } };
}
TempData["Message"] = message2;
return View(model);

}

这是模型:

 public class EmailFormModel
{
[Required, Display(Name="subject")]
public string subject { get; set; }
[Required, Display(Name = "Your name")]
public string FromName { get; set; }
[Required, Display(Name = "Your email"), EmailAddress]
public string FromEmail { get; set; }
[Required]
public string Message { get; set; }
}

我正在使用 smoothScroll 导航,如下所示:

<div class="collapse navbar-collapse">
<ul class="nav navbar-nav navbar-right">
<li><a href="#home" class="smoothScroll">HOME</a></li>
<li><a href="#about" class="smoothScroll">STUDIO</a></li>
<li><a href="#team" class="smoothScroll">TEAM</a></li>
<li><a href="#service" class="smoothScroll">SERVICES</a></li>
<li><a href="#work" class="smoothScroll">WORK</a></li>
<li><a href="#pricing" class="smoothScroll">PRICING</a></li>
<li><a href="#contact" class="smoothScroll">CONTACT</a></li>
@*<li>@Html.ActionLink("Contact", "Contact", "Home")
</li>*@
</ul>
</div>

因此在导航中它会跳转到索引页面的正确区域

我现在是这样的:

[HttpGet]
public ActionResult Contact(string uniqueUri)
{
EmailFormModel model = TempData["EmailFormModel"] as EmailFormModel;
//ViewBag.Message = "Your contact page.";


return View(model);
}

[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Contact(EmailFormModel model)
{
TempData["EmailFormModel"] = model;
string message2 = "There are a few errors";
if (ModelState.IsValid)
{
var body = "<p>Email From: {0} ({1})</p><p>Message:</p><p>{2}</p>";
var message = new MailMessage();
message.To.Add(new MailAddress("nengelen@online.nl")); //replace with valid value
message.Subject = model.subject;
message.Body = string.Format(body, model.FromName, model.FromEmail, model.Message);
message.IsBodyHtml = true;

using (var smtp = new SmtpClient())
{
await smtp.SendMailAsync(message);

}

return new RedirectResult(Url.Action("") + "#contact");
}
else
{
ModelState.AddModelError("ReviewErrors", "some error occured");
//return RedirectToAction("Create", new { uniqueUri = Request.RequestContext.RouteData.Values["uniqueUri"] });
return new RedirectResult(Url.Action("") + "#contact");
}


}

我现在是这样的:

        public ActionResult Contact()
{
EmailFormModel model = TempData["EmailFormModel"] == null ? new EmailFormModel() : (EmailFormModel)TempData["EmailFormModel"];
ViewBag.Message = "Your contact page.";
return View(model);



}

[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Contact(EmailFormModel model)
{
TempData["EmailFormModel"] = model;
string message2 = "There are a few errors";
if (ModelState.IsValid)
{
var body = "<p>Email From: {0} ({1})</p><p>Message:</p><p>{2}</p>";
var message = new MailMessage();
message.To.Add(new MailAddress("nengelen@online.nl")); //replace with valid value
message.Subject = model.subject;
message.Body = string.Format(body, model.FromName, model.FromEmail, model.Message);
message.IsBodyHtml = true;

using (var smtp = new SmtpClient())
{
await smtp.SendMailAsync(message);

}

return new RedirectResult(Url.Action("") + "#contact");
}
else
{
ModelState.AddModelError("ReviewErrors", "some error occured");
//return RedirectToAction("Create", new { uniqueUri = Request.RequestContext.RouteData.Values["uniqueUri"] });
return new RedirectResult(Url.Action("") + "#contact");
}


}

在 Debug模式下,如果我不填写这些字段,它会出现在:

else
{
ModelState.AddModelError("ReviewErrors", "some error occured");
//return RedirectToAction("Create", new { uniqueUri = Request.RequestContext.RouteData.Values["uniqueUri"] });
return new RedirectResult(Url.Action("") + "#contact");
}

但是验证不可见

感谢大家的努力。但我刚刚制作了一个新的联系页面,现在它可以正常工作了。只需要弄清楚,在导航中使用正确的链接,但我刚刚提出了新问题。我只是将 DaWood 标记为最佳解决方案,因为您不能将多个标记标记为 answare。

谢谢大家!!

最佳答案

你错过了:

if (!ModelState.IsValid)
{
return View(model);
}

您需要渲染有问题的 View 。该框架随后将拾取验证错误并显示它们。

关于c# - 验证不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30080060/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com