0

我是 jquery 的新手,我无法解决以下问题:我想将一个对象传递给我的 mvc 应用程序中的一个控制器。这是我到目前为止得到的:

function enterPressed() {
    $(function () {
        $('#textBox').keypress(function (e) {

            var code = e.keyCode ? e.keyCode : e.which;
            if (code == 13) {
                doSomethingElse(textBox.value)

            }
        });
    });
}

function doSomethingElse(p) {
    $.ajax({
        type: 'GET',
        data: {string: p},
        url: '"Control/AddControl/Index"',
        success: function (data) { alert(p) },
        error: function (errorData) { alert("fail") }
    });
    return true;

但是每次当我按下回车键时,我都会以失败告终。我的控制器位于 ~/Controllers/Control/AddControl。你们中有人看到问题吗?

我的 C# 代码:

  public class AddControlController : Controller
{
    //
    // GET: /AddControl/


    public ActionResult Index(string control)
    {
        return RedirectToAction("ShowControl");
    }
}
4

3 回答 3

2

control正如预期的那样,您应该将值名称更改为 。您也可以使用@Url.Action()helper 来设置url参数。

$.ajax({
        type: 'GET',
        data: { control : p},
        url: '@Url.Action("Index","AddControl")',
        success: function (data) { alert(p) },
        error: function (errorData) { alert("fail") }
    });

最后,您的操作无法使用 ajax 响应返回重定向操作。如果您想在响应成功后进行重定向,您可以在客户端进行。

于 2013-07-11T13:58:43.997 回答
1

有几个问题:

1-您使用了错误的网址。正确的 url 是“/AddControl/Index”。

2-您的控制器中的代码将不起作用,因为您使用的是 ajax。您应该返回 Json 并在客户端处理重定向。

3-您应该允许通过 ajax 获取:

public ActionResult Index()    
{
   return Json("Ok", JsonRequestBehavior.AllowGet);    
}
于 2013-07-11T14:01:56.973 回答
1

您可能只想POST代替GET.

function doSomethingElse(p) {
    $.post(
        '@Url.Action("Index", "AddControl")',
        {
            control: p
        },
        function (data) {
            alert(data);
        }
    );
}

HttpPost您应该使用以下属性装饰您的控制器操作:

[HttpPost]
public ActionResult Index(string control)
{
    return Json("I received this: " + control);
}
于 2013-07-11T14:04:26.143 回答