powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Топик ненависти к Asp.Net MVC
25 сообщений из 235, страница 1 из 10
Топик ненависти к Asp.Net MVC
    #38409216
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имеем Asp.Net MVC 4 текущей версии, взятой нугетом. В метод Post приходит null,
несмотря на то, что в Request.Form все данные присутствуют. Если изменить название свойства в модели - всё работает. Где описано такое поведение DefaultModelBinder?

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
    public class TestData
    {
        // Если изменить название свойства, например на Value, всё работает.
        public string Data { get; set; } 
    }

    public class MyController : Controller
    {
        public ActionResult TestGet()
        {
            return View(new TestData { Data = "Data" });
        }

        [HttpPost]
        public void TestGet(TestData data)
        {
            if (data == null)
            {
                 // Почему? Request.Form всё есть...
            }
        }
    }


Код: c#
1.
2.
3.
4.
5.
6.
@model TestData
@using (Html.BeginForm())
{
    @Html.EditorFor(v => v.Data);
    <input type="submit" value="Сохранить" />
}
...
Рейтинг: 0 / 0
Топик ненависти к Asp.Net MVC
    #38409239
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а меня задолбала AjaxMin.dll
то в одном проекте подверсия не совпадет, то в другом
я б поразбирался с этими тонкостями да некогда
...
Рейтинг: 0 / 0
Топик ненависти к Asp.Net MVC
    #38409251
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
госпади, как вас угораздило назвать поле данных и модель в "посте" одинаково. Нормальные имена давать не пробовали?
правится легко:
Код: c#
1.
2.
3.
4.
5.
6.
7.
public void TestGet(TestData model)
        {
            if (model== null)
            {
                 // Почему? Request.Form всё есть...
            }
        }


нормальное поведение. у вас приходит в форме поле Data, контролер ожидаете модель data типа TestData. биндер не может замапить строчку на ваш класс, проверяется легко
смените типо в посте
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
[HttpPost]
        public void TestGet(string data)
        {
            if (data != null)
            {
                // профит
            }
        }
...
Рейтинг: 0 / 0
Топик ненависти к Asp.Net MVC
    #38409257
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,

нельзя использовать наименование переменной, аналогичное наименованию поля:

Код: c#
1.
2.
3.
4.
5.
        [HttpPost]
        public void TestGet(TestData model)
        {
                 // теперь всё будет работать
        }



это давно известное поведение. нельзя мешать наименования, биндер путается.

если в TestData будет поле Model, тогда надо сменить сигнатуру метода на
Код: plaintext
public void TestGet(TestData model2)
...
Рейтинг: 0 / 0
Топик ненависти к Asp.Net MVC
    #38409259
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
имхо ненависть от корявости руки, платформа тут ни причем.
...
Рейтинг: 0 / 0
Топик ненависти к Asp.Net MVC
    #38409260
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Паганельа меня задолбала AjaxMin.dll
то в одном проекте подверсия не совпадет, то в другом
я б поразбирался с этими тонкостями да некогда

какие проблемы, переходите на WebGrease или BundleTransformer
...
Рейтинг: 0 / 0
Топик ненависти к Asp.Net MVC
    #38409261
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эпическое зелье, сам Лёша пожаловал да с такой серьезной проблемой MVC

Датабиндер, конечно, умеет гадать на кофейной гуще, но не до такой же степени! :)
...
Рейтинг: 0 / 0
Топик ненависти к Asp.Net MVC
    #38409264
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Паганельа меня задолбала AjaxMin.dll
Выбрось её на помойку.
...
Рейтинг: 0 / 0
Топик ненависти к Asp.Net MVC
    #38409266
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRuгоспади, как вас угораздило назвать поле данных и модель в "посте" одинаково.Ну не повезло, с кем не бывает. :-)
handmadeFromRuНормальные имена давать не пробовали?Для этого надо почитать мануал про нормальные имена, где он? Где описаны эти соглашения об именах? Гугл молчит...
...
Рейтинг: 0 / 0
Топик ненависти к Asp.Net MVC
    #38409270
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КДля этого надо почитать мануал про нормальные имена, где он? Где описаны эти соглашения об именах? Гугл молчит...

... это логика, Спок (с)
...
Рейтинг: 0 / 0
Топик ненависти к Asp.Net MVC
    #38409271
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУЭпическое зелье, сам Лёша пожаловал да с такой серьезной проблемой MVC Не часто такое бывает.
МСУДатабиндер, конечно, умеет гадать на кофейной гуще, но не до такой же степени! :)А чё ему непонятно? Биндер путает имя параметра метода с именем свойства? Там регистр первой буквы разный исли чё... :-)

D ata vs d ata
...
Рейтинг: 0 / 0
Топик ненависти к Asp.Net MVC
    #38409274
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,

Леш зачем читать манула)) просто сами посмотрите модель назваться data и поле data, вот как другой человек поймет что эт такое вообще и зачем?) код имхо должен быть самодокументируемым
...
Рейтинг: 0 / 0
Топик ненависти к Asp.Net MVC
    #38409275
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttнельзя использовать наименование переменной, аналогичное наименованию поля:

Код: c#
1.
2.
3.
4.
5.
        [HttpPost]
        public void TestGet(TestData model)
        {
                 // теперь всё будет работать
        }



это давно известное поведение. нельзя мешать наименования, биндер путается.Ок, пасиб. Это где-то описано, или выявлено эмпирически? :-)
...
Рейтинг: 0 / 0
Топик ненависти к Asp.Net MVC
    #38409276
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,
биндер через рефлекшен собирает вам класс и регистр поля не важен
...
Рейтинг: 0 / 0
Топик ненависти к Asp.Net MVC
    #38409277
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КА чё ему непонятно? Биндер путает имя параметра метода с именем свойства? Там регистр первой буквы разный исли чё... :-)
D ata vs d ata
То есть формат URL тоже надо сделать регистрозависимым? :)
...
Рейтинг: 0 / 0
Топик ненависти к Asp.Net MVC
    #38409278
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КОк, пасиб. Это где-то описано, или выявлено эмпирически? :-)

похоже рано или поздно с этим многие сталкиваются :)
...
Рейтинг: 0 / 0
Топик ненависти к Asp.Net MVC
    #38409282
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRuЛеш зачем читать манула))"Если что-то не получается, надо читать инструкцию" (с) народное
handmadeFromRuпросто сами посмотрите модель назваться data и поле data, вот как другой человек поймет что эт такое вообще и зачем?) код имхо должен быть самодокументируемымНу захотелось мне, имею право. :-)
...
Рейтинг: 0 / 0
Топик ненависти к Asp.Net MVC
    #38409283
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУТо есть формат URL тоже надо сделать регистрозависимым? :)
На мой взгляд минус биндера от odata именно в этом...
...
Рейтинг: 0 / 0
Топик ненависти к Asp.Net MVC
    #38409285
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей КА чё ему непонятно? Биндер путает имя параметра метода с именем свойства? Там регистр первой буквы разный исли чё... :-)
D ata vs d ata
То есть формат URL тоже надо сделать регистрозависимым? :)А меж тем, данные приходят через Post а не через Url.
...
Рейтинг: 0 / 0
Топик ненависти к Asp.Net MVC
    #38409287
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,

нельзя катить бочку на ASP.NET MVC
(на какой-нибудь webforms можно)
...
Рейтинг: 0 / 0
Топик ненависти к Asp.Net MVC
    #38409290
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К"Если что-то не получается, надо читать инструкцию" (с) народное
Особенности и слабые стороны связывания моделей в ASP.NET MVC
...
Рейтинг: 0 / 0
Топик ненависти к Asp.Net MVC
    #38409291
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КА меж тем, данные приходят через Post а не через Url.
Ты понимаешь, что представляет собой пост запрос? :)
...
Рейтинг: 0 / 0
Топик ненависти к Asp.Net MVC
    #38409294
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей КА меж тем, данные приходят через Post а не через Url.
Ты понимаешь, что представляет собой пост запрос? :)

http://msdn.microsoft.com/ru-ru/magazine/hh781022.aspx Просто помните, что механизм связывания моделей ожидает, что имена свойств соответствуют синтаксису именования передачи формы независимо от того, какой это запрос — GET или POST.
...
Рейтинг: 0 / 0
Топик ненависти к Asp.Net MVC
    #38409296
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttАлексей К,

нельзя катить бочку на ASP.NET MVC
(на какой-нибудь webforms можно) Понял, больше не буду. :-)
...
Рейтинг: 0 / 0
Топик ненависти к Asp.Net MVC
    #38409298
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
офтоп:
hVostt,
картиночку с боромиром и таким текстом надо было))
...
Рейтинг: 0 / 0
25 сообщений из 235, страница 1 из 10
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Топик ненависти к Asp.Net MVC
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]