Может ли массив PHP передавать метод POST для отлова в ASP.NET MVC? - PullRequest
1 голос
/ 26 марта 2010

Может ли массив PHP передавать метод POST для перехвата в ASP.NET MVC?

Строка запроса: WebAccess / ArrayTest? Val [] = 1 & val [] = 2 & val [] = 3

Я пишу: ActionResult ArrayTest (String [] val)

Но это работает только в том случае, если строка запроса удаляет «[]»

Ответы [ 3 ]

1 голос
/ 26 марта 2010

Встроенный DefaultModelBinder в ASP.NET MVC не может обрабатывать сообщения массива rails / php / jquery1.4 (на это вы ссылаетесь при помощи val [] = 1 & val [] = 2 & val [] = 3) .

Вы должны либо создать пользовательское средство связывания моделей (Google google, много примеров), либо добавить индексы внутри скобки, например:

val[0]=1&val[1]=2&val[2]=3

И индексы не должны иметь пропущенных чисел.

Я исправил это с помощью скрипта, который при отправке формы просто добавляет индексы. то есть в jQuery:

$('form').find('input, select, textarea').attr('name', function(index, old) {
    return old.replace(/\[\]/, '[' + index + ']');
});
0 голосов
/ 28 апреля 2016
  public class PhpStyleArrayBinder : DefaultModelBinder,IModelBinder
    {
        public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
        {
            var val = bindingContext.ValueProvider.GetValue(bindingContext.ModelName+"[]");
            if (val != null)
                return val;
            return base.BindModel(controllerContext, bindingContext);
        }
    }

использование:

public JsonResult Get([ModelBinder(typeof (PhpStyleArrayBinder))] IEnumerable<string> data)
        {
            //
        }

http://pavelsvetlov.blogspot.com/2016/04/mvcnet-modelbinder-phpstyle-array.html

0 голосов
/ 26 марта 2010

(не ответ - но это трудно объяснить с помощью комментария S.O.)

Вы довольно запутались, предположив, что это действительно что-то, связанное с PHP. Кроме того, вы не говорите, какое «[]» вы удалили, чтобы заставить его работать. Непросветленным программистам asp там может быть легче понять:

<form method='POST' action='something.asp'>
   <input type='text' name='val[]'>
   <input type='text' name='val[]'>
   <input type='text' name='val[]'>
   <input type='submit' value='go'>
</form>

Использование некоторых языков веб-разработки данные из каждого из трех текстовых полей впоследствии доступны в массиве с именем 'val'. Как повторить это поведение в asp.net?

С * * +1010

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...