【发布时间】:2023-03-15 07:57:01
【问题描述】:
我正在构建一个 .NET 5.0 应用程序。我想通过 AJAX 调用将模型从 Razor 页面发送到名为 AJAX 的控制器。
我的模型绑定到页面表单。我尝试传递单个字符串,但无法在另一端找到值。我在 JSON 字符串中的名称和控制器方法中的参数名称相同。
我已经尝试了[FromBody] 标签和其他几种方法。我的网络显示数据是由我在参数中收到的null 传递的。
<div class="form-group row mb-3">
<div class="col">
<div class="input-group">
<span class="input-group-addon"><i class="fa fa-user-circle"></i></span>
<input asp-for="IndexEmail.Name" class="form-control" type="text" name="name" placeholder="Name" />
</div>
</div>
</div>
<div class="form-group row">
<div class="col">
<input value="Send" onclick="SendEmail()" class="btn btn-primary" type="submit" />
</div>
</div>
function SendEmail() {
debugger;
if ($("form").valid()) {
var jsonData = JSON.stringify({Name: $("#displayname").val(),Subject: $("#subject").val(),EmailAddress: $("#emailaddress").val(),MessageBody: $("#messagebody").val()});
$("body").addClass("loading");
$.ajax({
type: "POST",
url: "/Ajax/SendGrid_SendEmail",
data: jsonData,
contentType: "application/json; charset=utf-8",
dataType: "json",
error: function (xhr, status, error) {
}
}).done(function (data) {
$("body").removeClass("loading");
});
}
}
对控制器的 AJAX 调用:2
function SendEmail() {
debugger;
if ($("form").valid()) {
//var email = {};
//email.Name = $("#displayname").val();
var jsonData = { EmailAddress: $("#emailaddress").val(), MessageBody: $("#messagebody").val(), Name: $("#displayname").val(), Subject: $("#subject").val()};
$("body").addClass("loading");
$.ajax({
type: "POST",
url: '@Url.Action("SendGrid_SendEmail", "Ajax")',
contentType: "application/json; charset=utf-8",
dataType: "json",
data: {
data: $("#subject").val()
},
error: function (xhr, status, error) {
}
}).done(function (data) {
$("body").removeClass("loading");
});
}
}
模型到传递 ajax 调用。它绑定到我的剃须刀页面
public class IndexEmail
{
[Required]
public string Name { get; set; }
[Required]
public string Subject { get; set; }
[Required]
[EmailAddress]
public string EmailAddress { get; set; }
[Required]
public string MessageBody { get; set; }
}
控制器方法
[HttpPost]
public async Task<JsonResult> SendGrid_SendEmail(string data)
{
}
【问题讨论】:
标签: c# asp.net-core razor