我正在探索asp.net mvc,因为我想从Webforms切换。我只是试图尝试使用jQuery发布一个字符串并在响应中获取该字符串。但是,我不知道如何在控制器的action方法中访问post参数。
我尝试使用FormCollection但是它是空的(我猜这是显而易见的,因为我使用jQuery ajax调用而不是表单发布)
$(function () {
$("#GetReport").click(function () {
$.ajax({
type: 'POST',
url: '/Reports/GetReport',
data: 'Abracadabra Mercedes',
contentType: 'application/text;charset=utf-8',
dataType: 'text',
success: function (result) {
alert(result);
}
});
});
});
//Controller Code
public class ReportsController : Controller
{
//
[HttpPost]
public ActionResult GetReport(string query)
{
ViewBag.Result = "Hello";
ViewBag.Geronimo = query;
return View();
}
}
//View Code
@{
Layout = null;
}
@ViewBag.Result + @ViewBag.Geronimo
答案 0 :(得分:1)
您的“数据”必须是URL上的键/值列表。然后,您将把这些信息传递到Action方法的查询参数中。
e.g。
$(function () {
$("#GetReport").click(function () {
$.ajax({
type: 'POST',
url: '/Reports/GetReport',
data: 'query=Abracadabra Mercedes',
success: function (result) {
alert(result);
}
});
});
});
在那个例子中,你可以看到他正在这样做。寻找:
var d = "itemId=" + itemId;
编辑:我刚刚在这里试过
<input type="button" value="Click" id="GetReport" />
<input type="text" id="tester"/>
<h2>Index</h2>
<script type="text/javascript">
$(function () {
$("#GetReport").click(function (e) {
var d = "input=" + $('#tester').val();
debugger;
$.ajax({
type: 'POST',
url: '/Home/test',
data: d,
success: function (result) {
alert(result);
}
});
if (e && e.preventDefault) {
e.preventDefault();
}
});
});
和
public class HomeController : Controller
{
[HttpPost]
public ActionResult Test(string input)
{
return new ContentResult() { Content = input };
}