我正在尝试使用jQuery的AJAX方法将两个参数发送到我的控制器动作。但是,控制器正在显示与第二个参数重复的第一个参数的值。为什么会这样呢?
AJAX呼叫:
$('#btnSendTestEmail').click(function () {
var dataObject = JSON.stringify({
TestEmail: 'TestEmailAddress',
NotificationEmail: 'NotificationAddresss'
});
$.ajax({
url: '/SystemVariables/SendTestEmail',
type: 'POST',
async: false,
dataType: 'json',
contentType: 'application/json',
processData: false,
data: dataObject,
success: function (response) { },
error: function (response) { }
});
});
控制器操作:
[HttpPost]
public ActionResult SendTestEmail(string TestEmail, string NotificationEmail)
{
string emailAddress = String.IsNullOrEmpty(TestEmail) ? SysNotificationEmail : TestEmail;
...
return View();
}
上面的代码将控制器的两个参数(即TestEmail和NotificationEmail)的值显示为“ TestEmailAddress”
答案 0 :(得分:1)
创建一个模型,以便绑定一些东西:
public class EmailModel
{
public string TestEmail { get; set; }
public string NotificationEmail { get; set; }
}
然后在控制器中接受模型,然后它将知道要绑定到的结构:
[HttpPost]
public ActionResult SendTestEmail(EmailModel model)
{
string emailAddress = model.TestEmail;
string test = model.NotificationEmail;
return View();
}
答案 1 :(得分:1)
在ASP.NET MVC中将数据发布到操作时,您只需要将一个模型bind
包含在操作中。
这是DefaultModelBinder的默认行为。
您需要使用这些属性创建一个类,并在操作中仅保留一个参数。
public ActionResult SendTestEmail(YourModel model)
答案 2 :(得分:0)
请尝试以下代码:
$(document).on('click', '#btnSendTestEmail', function(e){
e.preventDefault();
$.post('/SystemVariables/SendTestEmail',
{
TestEmail: 'TestEmailAddress',
NotificationEmail: 'NotificationAddresss'
})
.done(function(response){
console.log(response);
})
.fail(function(xhr, exception){
console.log(response);
})
})
答案 3 :(得分:0)
您是否尝试过不使用json对象发送数据?会是这样的:
$('#btnSendTestEmail').click(function () {
$.ajax({
url: '/SystemVariables/SendTestEmail',
type: 'POST',
dataType: 'json',
contentType: 'application/json',
data: {'TestEmail': "TestEmailAddres", 'NotificationEmail': "NotificationAdress"},
success: function (response) { },
error: function (response) { }
});
});