【发布时间】:2021-10-08 12:10:49
【问题描述】:
我正在学习使用 dotnetfiddle web 编写代码的 C# MVC。 我已经使用 MVC 类型的默认代码 dotnetfiddle 创建了一个新项目,但我想在警报中显示 question 而不是 answer。
我想知道如何从视图向控制器传递参数。
这是ajax方法:
$.ajax({
url: '@Url.RouteUrl(new{ action="GetAnswer", controller="Home"})',
data: JSON.stringify({Answer: '', Question: $('#Question').val()}),
type: 'POST',
dataType: 'json',
contentType: "application/json; charset=utf-8",
success: function(resp) {
openAlert(resp.result);
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
openAlert("ERROR: " + errorThrown);
}
});
这是控制器方法:
[HttpPost]
public JsonResult GetAnswer(string question)
{
int index = _rnd.Next(_db.Count);
var answer = _db[index];
return Json(new { result = question});
}
你可以在这里检查和测试代码:dotnetfiddle(编辑:如果它在这里工作,那将是一个很好的答案)
【问题讨论】:
-
为了发送 JSON,你需要
data: JSON.stringify({Answer: '', Question: $('#Question').val()}),或者 jQuery 将发送Answer=&Question=xyz代替 -
我已经将
data: {Answer: '', Question: $('#Question').val()},更改为data: JSON.stringify({Answer: '', Question: $('#Question').val()}),,但我在控制器中得到了一个空变量。 -
对我不起作用。也许错误是另一个原因,但我怀疑它是由 dotnetfiddle 自动生成的示例代码。
标签: javascript c# asp.net ajax asp.net-mvc