为了账号安全,请及时绑定邮箱和手机立即绑定

如何在没有表单的情况下将字符串数组发布到ASP.NETMVC控制器?

如何在没有表单的情况下将字符串数组发布到ASP.NETMVC控制器?

倚天杖 2019-07-22 16:48:59
如何在没有表单的情况下将字符串数组发布到ASP.NETMVC控制器?我正在创建一个小应用程序来教自己ASP.NETMVC和JQuery,其中一个页面是可以选择的项目列表。然后,我想按一个按钮,使用JQuery的POST函数,向我的控制器发送一个列表(或类似的内容),其中包含所选项目的ID。我设法获得了一个数组,其中包含了所选元素的ID,现在我想发布它。我可以这样做的一种方法是在页面中有一个带有隐藏值的虚拟表单,然后用所选的项设置隐藏的值,并发布该表单;不过,这看起来很粗糙。通过将数组直接发送到控制器,是否有更干净的方法来实现这一点?我尝试了一些不同的东西,但看起来控制器无法映射它正在接收的数据。以下是目前为止的代码:function generateList(selectedValues) {    var s = {       values: selectedValues //selectedValues is an array of string    };    $.post("/Home/GenerateList", $.toJSON(s), function() { alert("back") }, "json");}然后我的控制器看起来像这样public ActionResult GenerateList(List<string> values){     //do something}我得到的只是控制器参数中的“NULL”.有小费吗?
查看完整描述

3 回答

?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

我修改了我的响应以包括我所做的测试应用程序的代码。

更新:我更新了jQuery,将“传统”设置为true,这样它将再次工作(per@dustinDavis‘答案)。

首先,javascript:

function test(){
    var stringArray = new Array();
    stringArray[0] = "item1";
    stringArray[1] = "item2";
    stringArray[2] = "item3";
    var postData = { values: stringArray };

    $.ajax({
        type: "POST",
        url: "/Home/SaveList",
        data: postData,
        success: function(data){
            alert(data.Result);
        },
        dataType: "json",
        traditional: true
    });}

下面是我的控制器类中的代码:

public JsonResult SaveList(List<String> values){
    return Json(new { Result = String.Format("Fist item in list: '{0}'", values[0]) });}

当我调用javascript函数时,我会收到一个警告,上面写着“列表中的第一项:‘item 1’”。希望这能帮上忙!


查看完整回答
反对 回复 2019-07-22
?
慕容708150

TA贡献1831条经验 获得超4个赞

不要将数据作为数组发布。若要绑定到列表,应为每个键提交具有相同值的键/值对。

您不应该需要一个表单来完成这个任务。您只需要一个键/值对的列表,您可以在对$.post的调用中包含它。


查看完整回答
反对 回复 2019-07-22
  • 3 回答
  • 0 关注
  • 559 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信