gpt4 book ai didi

c# - 使用 HttpPost 注释?修复它不会破坏页面

转载 作者:可可西里 更新时间:2023-11-01 16:56:12 26 4
gpt4 key购买 nike

我正在构建一个 MVC 电子邮件表单,教程页面上的所有内容都可以正常工作,除非我保留 [HttpPost] 分页符。

我不认为我忘记了导入。

如何解决这个问题,以便电子邮件表单将发布或者更确切地说 [HttpPost] 不会导致错误?我也试过 [System.Web.Mvc.HttpPost]

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Net.Mail;
using System.Text;
using SW.Models;

namespace SW.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}

public ActionResult About()
{
//ViewBag.Message = "Your application description page.";

return View();
}

//[System.Web.Mvc.HttpPost]
public ActionResult Contact(ContactModels c)
{
//ViewBag.Message = "Your contact page.";
if (ModelState.IsValid)
{
try
{
MailMessage msg = new MailMessage();
SmtpClient smtp = new SmtpClient();
MailAddress from = new MailAddress(c.Email.ToString());
StringBuilder sb = new StringBuilder();
msg.To.Add("mail@hotmail.com");
msg.Subject = "Contact Us";
msg.IsBodyHtml = false;
smtp.Host = "mail.mail.com";
smtp.Port = 25;
sb.Append("First name: " + c.FirstName);
sb.Append(Environment.NewLine);
sb.Append("Last name: " + c.LastName);
sb.Append(Environment.NewLine);
sb.Append("Email: " + c.Email);
sb.Append(Environment.NewLine);
sb.Append("Comments: " + c.Comment);
smtp.Send(msg);
msg.Dispose();
return View("Success");
}
catch (Exception)
{
return View("Error");
}
}
return View();
}
}
}

当我转到“联系”时,我收到错误消息:

“/”应用程序中的服务器错误。

找不到资源。

描述:HTTP 404。您正在查找的资源(或其依赖项之一)可能已被删除、名称已更改或暂时不可用。请检查以下 URL 并确保其拼写正确。

请求的 URL:/Home/Contact

版本信息:Microsoft .NET Framework 版本:4.0.30319; ASP.NET版本:4.0.30319.18446

最佳答案

如果不知道您收到的错误消息,很难确定,但我认为这就是问题所在:您需要为 Contact() 操作使用单独的 GET 和 POST 方法。 GET 处理您正在查看联系人页面的情况。 POST 处理您提交表单的情况。

它可能看起来像这样:

    [System.Web.Mvc.HttpGet]
public ActionResult Contact()
{
return View(new ContactModels());
}

[System.Web.Mvc.HttpPost]
public ActionResult Contact(ContactModels c)
{
//ViewBag.Message = "Your contact page.";
if (ModelState.IsValid)
{
try
{
MailMessage msg = new MailMessage();
SmtpClient smtp = new SmtpClient();
MailAddress from = new MailAddress(c.Email.ToString());
StringBuilder sb = new StringBuilder();
msg.To.Add("mail@hotmail.com");
msg.Subject = "Contact Us";
msg.IsBodyHtml = false;
smtp.Host = "mail.mail.com";
smtp.Port = 25;
sb.Append("First name: " + c.FirstName);
sb.Append(Environment.NewLine);
sb.Append("Last name: " + c.LastName);
sb.Append(Environment.NewLine);
sb.Append("Email: " + c.Email);
sb.Append(Environment.NewLine);
sb.Append("Comments: " + c.Comment);
smtp.Send(msg);
msg.Dispose();
return View("Success");
}
catch (Exception)
{
return View("Error");
}
}
return View();
}

如果您只有一个带有 HttpPost 属性的方法,则它仅适用于 HTTP POST 请求,因此在您的 Web 浏览器中尝试 HTTP GET 页面将失败。

关于c# - 使用 HttpPost 注释?修复它不会破坏页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25461936/

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