下面是我的脚本
$(function () {
$(".formSubmit").click(function () {
var cName = $('#cName').val();
var cSurname = $('#cSurname').val();
var cEmail = $('#cEmail').val();
var cMessage = $('#cMessage').val();
console.log(cMessage);
console.log(cEmail);
console.log(cSurname);
console.log(cName);
if (cName != null && cName != '' && cSurname != null && cSurname != '' && cEmail != null && cEmail != '' && cMessage != null && cMessage != '') {
$.ajax({
type: "GET",
url: "/api/contactusapi/" + cName + "/" + cSurname + "/" + cEmail + "/" + cMessage + "/?",
contentType: "json",
dataType: "json",
success: function (data) {
if (data != null) {
}
},
error: function (xhr) {
alert(xhr.responseText);
}
});
}
});
});
下面是我的“contactusapi”api
namespace iskorumacom.Controllers
{
public class ContactUsApiController : ApiController
{
[HttpGet]
public int Get(string cName, string cSurname, string cEmail, string cMessage)
{
try
{
using (Data.DataClassesDataContext dc = new Data.DataClassesDataContext())
{
string cHTML =
"<h3></h3>" +
"<b>Ad:</b> " + cName + "<br />" +
"<b>Soyad :</b> " + cSurname + "<br />" +
"<b>e-Mail :</b> " + cEmail + "<br />" +
"<b>Mesaj :</b> " + cMessage;
using (MailMessage MailMessageLocal = new MailMessage())
{
MailMessageLocal.From =
new MailAddress("m@majorworx.com", cName + " " + cSurname, System.Text.Encoding.UTF8);
MailMessageLocal.To.Add("m@majorworx.com");
MailMessageLocal.Subject = "İletişim Formu Formu";
MailMessageLocal.IsBodyHtml = true;
MailMessageLocal.BodyEncoding = System.Text.Encoding.UTF8;
MailMessageLocal.Body = cHTML;
MailMessageLocal.Priority = MailPriority.High;
using (SmtpClient SmtpClientLocal = new SmtpClient())
{
return -1;
}
}
}
}
catch
{
return 0;
}
}
}
}
和我的 route.config 文件夹
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
namespaces: new string[] { "iskorumacom.Controllers" }
);
}
最佳答案
您的 Controller 继承自 ApiController,但您的路由是为 MVC Controller 配置的。
- 如果你想使用
ApiController
然后使用.MapHttpRoute
方法配置路由。 - 如果您想使用
.MapRoute
方法进行配置,则从Controller
而不是ApiController
继承您的 Controller 。
此外,在您的网址中,您要在主机和端口之后添加 /api
。 /api
在使用 .MapHttpRoute
定义路由时在 routeTemplate 中定义,如下所示 -
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
在您的情况下,将您的 WebApiConfig 配置为 -
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
现在使用 url /api/contactusapi?cName=myname&cSurname=mysurname&cEmail=myemail&cMessage=mymessage 调用您的 api
或者您可以将 Route
属性添加到您的操作方法中,如下所示 -
namespace iskorumacom.Controllers
{
public class ContactUsApiController : ApiController
{
[HttpGet]
[Route("api/contactus/{cName}/{cSurName}/{cEmail}/{cMessage}")]
public int Get(string cName, string cSurname, string cEmail, string cMessage) {
// Your code
}
}
}
现在将您的 API 称为 - /api/contactus/myname/mysurname/myemail/mymessage
关于javascript - 我用 mvc .net 写了一个 web api,但是我收到了 404 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65300224/