在mvc 3 Razor中将字符串列表传递给Controller

时间:2011-12-20 08:57:22

标签: javascript jquery .net asp.net-mvc-3 razor


我有mvc 3 Razor中的字符串传递列表到控制器的问题 我使用Jquery来设置值 但是在服务器端,第一个值总是假的,我不知道为什么:(
我的代码在这里:
类:

public class ListFieldInfo
{
    public List<string> FieldFilters { get; set; }
}

查看:

    @using (Html.BeginForm("Export", "Books", FormMethod.Post,new { @id = "exportForm", hidden = true }))
    {
    <fieldset>
        @Html.HiddenFor(m => m.status_info.FieldFilters, new { @id = "status_filters" })
    </fieldset>      
    }

使用Javascript:

$('#status_filters').add("0");
$('#status_filters').add("1");

控制器中的调试:

FieldFilters[0] = "false"// I don't know why
FieldFilters[1] = "1"

我试图搜索谷歌和stackoverflow但仍然没有帮助 请帮助我,提前谢谢你

2 个答案:

答案 0 :(得分:2)

在您的情况下,您需要为一个HiddenField接收单个字符串并将其拆分在服务器端。

如果您需要接收List,则需要使用以下名称构建一组控件:

<input type="hidden" name="model.status_info.FieldFilters" />
<input type="hidden" name="model.status_info.FieldFilters" />
etc...

以下是来自Phill Haak的精彩文章:http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx

答案 1 :(得分:0)

在javascript控制台中,尝试以下操作:

"0" == false

有帮助,是吗?我怀疑MVC正在扮演愚蠢的乞丐,假设这就是你的意思。首先,尝试在Firebug的网络面板中检查POST请求(或者您使用的任何Web调试),然后我建议您尝试使用普通数字而不是字符串。