Javascript 在没有元素的情况下使用JS发布表单值?
我有一个带有属性的模型,其中一个是集合 我希望有一个客户端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
这怎么可能呢?您可以使用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)
。如果您在回答中包含您的评论,以供参考,那就太好了。