【问题标题】:Pass list of string into Controller in mvc 3 Razor将字符串列表传递给 mvc 3 Razor 中的控制器
【发布时间】:2011-12-20 08:57:22
【问题描述】:


我在 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"

我尝试搜索 google 和 stackoverflow 但仍然没有帮助
请帮助我,提前谢谢

【问题讨论】:

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


    【解决方案1】:

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

    如果您需要接收列表,您需要构建一组名称如下的控件:

    <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

    【讨论】:

      【解决方案2】:

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

      "0" == false
      

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

      【讨论】:

        猜你喜欢
        • 2016-10-13
        • 1970-01-01
        • 1970-01-01
        • 2017-10-23
        • 1970-01-01
        • 1970-01-01
        • 2017-04-02
        • 1970-01-01
        • 2016-07-18
        相关资源
        最近更新 更多