Передать список строк в контроллер в mvc 3 Razor - PullRequest
1 голос
/ 20 декабря 2011


У меня проблемы с передачей списка строк в контроллер в 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, но все равно не помогло
Пожалуйста, помогите мне, спасибо заранее

Ответы [ 2 ]

2 голосов
/ 20 декабря 2011

В вашем случае вам нужно получить одну строку для одного HiddenField и разбить ее на стороне сервера.

Если вам нужно получить список, вам нужно создать набор элементов управления с именами, такими как:

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

Вот отличная статья от Фила Хаака: http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx

0 голосов
/ 20 декабря 2011

В консоли javascript попробуйте следующее:

"0" == false

Полезно, а? Я подозреваю, что MVC играет глупых нищих, предполагая, что это то, что вы имели в виду. Сначала попробуйте проверить POST-запрос на сетевой панели Firebug (или любой другой веб-отладке, которую вы используете), затем я бы посоветовал вам использовать вместо строк простые числа.

...