2017-02-20 15 views
0

У меня есть форму. в этой форме у меня есть свойство text area.once. Я нажимаю кнопку «Отправить». Я хочу показать некоторые значения сумка представления на той же странице, в то время как я очищаю форму.очистить текстовую область почтовым методом

В моем сценарии все становится ясно, кроме одной текстовой области. так что для этого

Я использовал следующий подход

модели класса

public class SomeModel 
{ 
... 

public list<user> userlist {get; set} 
} 

контроллер класса

[HttpPost] 
public ActionResult SomeAction(SomeModel model) 
{ 
    model.userlist = new List<user>(); 

    if (ModelState.IsValid) 
    { 
     ..... 

     ModelState.Clear(); 
     ModelState.Remove(model.SampleTextArea); 
     model.SampleTextArea = "" 
    } 


    return View("SomeAction", model); 
} 

теперь все работает нормально в первый раз. но без обновления страницы. Если я заполняю те же значения в этой форме и нажимаю кнопку «Отправить»,

, так как его утверждение о проверке модели недействительно, это функция, не работающая со второй попытки вперед для одинаковых значений модели.

его говорит об ошибке, как "Список пользователей" System.Int [32] становится нулевым

как я могу удалить это значение области текста правильно, без страницы режиссуры (RedirecToAction())

+0

конструктор по умолчанию для SomeModel инстанцировании ли новый список ? – BillRuhl

+0

да это работает для 1-й попытки и 2-й попытки вперед и для тех же свойств модели, что это не работает – kez

+0

Вы пробовали настройку model.userlist = new Список (); перед возвратом ... похоже, что ваш объект списка имеет значение null, когда вы возвращаете модель. – BillRuhl

ответ

0

См here. Я использую этот код, чтобы удалить запись из ModelState:

/// <summary> 
    /// Removes the ModelState entry for this property. 
    /// </summary> 
    public static void RemoveFor<M, P>(this ModelStateDictionary modelState, 
             Expression<Func<M, P>> property) 
    { 
     string key = KeyFor(property); 

     modelState.Remove(key); 
    } 

    /// <summary> 
    /// Returns the ModelState key used for this property. 
    /// </summary> 
    private static string KeyFor<M, P>(Expression<Func<M, P>> property) 
    { 
     return ExpressionHelper.GetExpressionText(property); 
    } 

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

// Remove value from both ModelState and the model 
ModelState.RemoveFor((SomeModel m) => m.SampleTextArea); 
model.SampleTextArea = "";