【问题标题】:wiring up the dropdownlist to run a function in a controller连接下拉列表以在控制器中运行功能
【发布时间】:2017-01-18 22:52:14
【问题描述】:

是的...我一直在搜索有关连接下拉列表的信息,以便它使用 asp.net mvc 工具在控制器中运行一个函数。

$(function() {
    $("#title").change(function() {
        var selectedVal=$(this).val();
        $.getJSON("UserController/YourAction",{ id: selectedVal } , function(result) {
            //Now you can access the jSon data here in the result variable
        });
    });
});

假设您的 UserController 中有一个名为 YourAction 的 Action 方法,该方法返回 JSON

public ActionResult YourAction(int id)
{
    //TO DO : get data from wherever you want. 
    var result=new { Success="True", Message="Some Info"};
    return Json(result, JsonRequestBehavior.AllowGet); 
}

所以当我使用它时它什么也没做??? 我不知道 json 是什么,但我知道我不需要我的应用程序返回任何东西......

所以这就是尝试过的......在编辑表单中我有这个元素:

$('#RES_TEST_ID').change(function () {
    var CurVID = $(this).val();
    var IntVID = $(document.getElementById('BUVID')).val();
    //alert(CurVID);
    //alert(IntVID);
    debugger 
    $.getJSON("TEST_REQUESTController/CheckCTEST", { Int_TEST_ID: IntTID, Cur_TEST_ID: CurTID }, function (result) {
    }); 
});

在编辑控制器中...我在帖子和获取部分都厌倦了这部分,因为帖子没有说明您应该在控制器中的哪个位置添加它:

public ActionResult CheckChangeTEST(int Int_TEST_ID, int Cur_TEST_ID)
{
    if (Int_TEST_ID != Cur_TEST_ID)
    {
        var SelectedTEST = db.TEST_TEST_INFO.Find(Int_TEST_ID);
        SelectedTEST.VI_STATUS = 1;
        SelectedTEST = db.TEST_TEST_INFO.Find(Cur_TEST_ID);
        SelectedTEST.VI_STATUS = 2;
        var result = new { Success = "True", Message = "Some Info" };
        return Json(result, JsonRequestBehavior.AllowGet);
    }
    return null;
}

对我来说,什么都没有发生...我尝试查看断点,但它们从未进入控制器。我再次将它放在编辑控件下的 Post 和 get 部分中,因为我希望它在用户编辑更改下拉列表中的值时运行。任何人都有任何想法可以分享这里发生的事情?

【问题讨论】:

  • 如果你的控制器是UserController,你的方法是YourAction(),那么url需要是'/User/YourAction',)不是'UserController/YourAction')但是总是使用@Url.Action("YourAction", "User")'来生成正确的url .并且只需使用浏览器工具调试代码就会很明显你遇到了 404 错误
  • 嗨,斯蒂芬...我没有收到 404 错误,只是在我调试 javascript 调试而不是后面的代码时不会去调试....所以我不知道它是调用函数...老实说,我不知道自己在做什么...所以我也是拉丁语...所以您说的是使用@而不是正斜杠,如果我可以问,@会做什么?非常感谢您的帮助...我会尝试所有这些建议。谢谢!
  • 如果您打开浏览器开发工具 (F12) 并查看控制台选项卡,您会看到错误
  • 还有什么是浏览器工具?我能通过 nugets 得到这个吗?
  • 啊,好的,谢谢...如果你不介意我问,我的电话应该在控制器的 get 或 post 部分吗?

标签: javascript c# json asp.net-mvc vb.net


【解决方案1】:

在对控制器的 ajax 调用中,您需要为控制器和操作修复路由参数。框架会自动理解“控制器”名称。因此,如果您有 FooController 并且想要路由到 Bar 操作方法,那么您的 URL 路径将是 "Foo/Bar"

$.getJSON("TEST_REQUESTController/CheckCTEST" ...

应该是

$.getJSON("TEST_REQUEST/CheckChangeTEST" ...

您也可以在您的操作上使用 Get 属性装饰器来装饰该操作:

[HttpGet]
public ActionResult CheckChangeTEST(int Int_TEST_ID, int Cur_TEST_ID)
{
    //your code
}

【讨论】:

  • 嗨 justsomedude...啊,好的...上面的用户说我也可以使用@...谢谢您...我会尝试一下!我感谢你的帮助!!出于某种原因,我不能给你+1的答案...系统拒绝我的尝试....但如果可以的话,我会+1谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-11
  • 2019-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多