Почему я получаю пустую строку вместо пустой строки при получении запроса POST из Razor View? - PullRequest
67 голосов
/ 04 сентября 2010

Раньше я получал пустую строку, когда не было значения:

[HttpPost]
public ActionResult Add(string text)
{
    // text is "" when there's no value provided by user
}

Но сейчас я прохожу модель

[HttpPost]
public ActionResult Add(SomeModel Model)
{
    // model.Text is null when there's no value provided by user
}

Поэтому я должен использовать оператор ?? "".

Почему это происходит?

Ответы [ 3 ]

144 голосов
/ 17 февраля 2012

Вы можете использовать атрибут DisplayFormat в свойстве класса вашей модели:

[DisplayFormat(ConvertEmptyStringToNull = false)]
8 голосов
/ 05 сентября 2010

Привязка модели по умолчанию создаст для вас новую модель SomeModel. Значением по умолчанию для строкового типа является null, поскольку это ссылочный тип, поэтому для него задано значение null.

Это вариант использования метода string.IsNullOrEmpty ()?

2 голосов
/ 07 ноября 2015

Я пытаюсь это сделать в Create and Edit (мой объект называется 'entity'): -

        if (ModelState.IsValid)
        {
            RemoveStringNull(entity);
            db.Entity.Add(entity);
            db.SaveChanges();
            return RedirectToAction("Index");
        }

        return View(entity);
    }

, который вызывает это: -

    private void RemoveStringNull(object entity)
    {
        Type type = entity.GetType();
        FieldInfo[] fieldInfos = type.GetFields(BindingFlags.Instance | BindingFlags.GetField | BindingFlags.Public | BindingFlags.NonPublic);
        for (int j = 0; j < fieldInfos.Length; j++)
        {
            FieldInfo propertyInfo = fieldInfos[j];
            if (propertyInfo.FieldType.Name == "String" )
            {
                object obj = propertyInfo.GetValue(entity);
                if(obj==null)
                    propertyInfo.SetValue(entity, "");
            }
        }
    }

Это будет полезно, есливы используете Database First, и ваши атрибуты Model стираются каждый раз, когда другие решения терпят неудачу.

...