Первое, на что я наткнулся, было то, что @Scripts{}
не работает с частичными представлениями, поэтому мне пришлось подумать о другом способе.
Итак, я создал внешний файл, назвал его «custom.js» и сослался на него.это на _Layout.chtml, ниже: @Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/jqueryval")
...
@Scripts.Render("~/Scripts/custom.js")
Второе, что я заметил, было то, что URL из Ajax Call не работал, потому что я использовал синтаксис Razor во внешнем js-файле.
Итак, я изменил url: '@Url.Action("SendEmailAsync", "Home")',
на url: '/Home/SendEmailAsync',
После этого я получил ошибку 500, поэтому я решил, что изменив type: "Post",
на type: "Get",
и dataType: "json",
на dataType: "html",
идобавив contentType: "application/json; charset=utf-8",
я был немного ближе, потому что получал ошибку 404.
Итак, я пошел к своему методу Controller и удалил [HTTPPOST]
и все.
Final Ajax Call:
$("#submitContactInfo").on("click", function () {
if ($('#contact-form').valid() === true) {
$.ajax({
url: '/Home/SendEmailAsync',
type: "GET",
data: {
"name": Name.value,
"lastName": LastName.value,
"email": Mail.value,
"phone": Mobile.value
},
contentType: "application/json; charset=utf-8",
dataType: "html",
success: function (result) {
if (result === "1") {
...
}
else {
...
}
}
});
}
});
Мой контроллер
public async System.Threading.Tasks.Task<ActionResult> SendEmailAsync(string name, string lastname, string email, string phone)
{
var value = 0;
...
return Json(value, JsonRequestBehavior.AllowGet);
}
Если у вас есть лучшее решение или какие-либо замечания, не стесняйтесь.Я открыт для предложений.