Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在没有元素的情况下使用JS发布表单值?_Javascript_Asp.net Mvc_Forms_Http Post - Fatal编程技术网

Javascript 在没有元素的情况下使用JS发布表单值?

Javascript 在没有元素的情况下使用JS发布表单值?,javascript,asp.net-mvc,forms,http-post,Javascript,Asp.net Mvc,Forms,Http Post,我有一个带有属性的模型,其中一个是集合 我希望有一个客户端JS函数,用一些值设置该集合(或者通过一个单独的参数,或者通过我不太熟悉的模型绑定器,将其发送到控制器操作) 这怎么可能呢?您可以使用JSON发送任意复杂的结构: $.ajax({ url: '/somecontroller/someaction', type: 'POST', contentType: 'application/json', data: JSON.stringify({ i

我有一个带有属性的模型,其中一个是集合

我希望有一个客户端JS函数,用一些值设置该集合(或者通过一个单独的参数,或者通过我不太熟悉的模型绑定器,将其发送到控制器操作)


这怎么可能呢?

您可以使用JSON发送任意复杂的结构:

$.ajax({
    url: '/somecontroller/someaction',
    type: 'POST',
    contentType: 'application/json',
    data: JSON.stringify({
        id: 123,
        items: [
            { foo: 'bar 1' },
            { foo: 'bar 2' },
            { foo: 'bar 3' }
        ]
    }),
    success: function(result) {
        alert('ok');
    }
});
控制器操作将采用与JSON结构匹配的视图模型:

[HttpPost]
public ActionResult SomeAction(MyViewModel model)
{
    ...
}
public class MyViewModel
{
    public int Id { get; set; }
    public ItemViewModel[] Items { get; set; }
}

public class ItemViewModel
{
    public string Foo { get; set; }
}
下面是与此示例结构匹配的模型定义:

[HttpPost]
public ActionResult SomeAction(MyViewModel model)
{
    ...
}
public class MyViewModel
{
    public int Id { get; set; }
    public ItemViewModel[] Items { get; set; }
}

public class ItemViewModel
{
    public string Foo { get; set; }
}

是的,这是可能的,为此您需要通过javascript创建路由,并创建一个函数来捕获值​​或者使用backbonejs,这已经给了你这样的东西()你能不能把这个作为答案贴出来?关于模型绑定呢?我没有使用JS发布值,我定期提交表单,我只是不知道如何在发布的表单中设置模型的集合属性。可能伪造元素是最好的方法(即生成隐藏元素,将其
名称
属性设置为
Model.CollectionProperty[0]
Model.CollectionProperty[1]
等),是这样吗?如果您定期发布表单,那么您应该遵守默认模型绑定器使用的输入字段的标准命名约定:如果您要使用隐藏字段,您可以这样生成它们:
@Html.HiddenFor(x=>x.CollectionProperty[index].someSubperty)
。如果您在回答中包含您的评论,以供参考,那就太好了。