2017-02-20 5 views
0

私はフォームを持っています。そのフォームで私はテキストエリアproperty.onceを持っています私はsubmitボタンをクリックします私はフォームをクリアしながら、同じページにいくつかのビューバッグの値を表示したいと思います。投稿方法のテキスト領域を消去

私のシナリオでは、1つのテキスト領域を除いてすべてが明確になります。そのため

のために私は次のようなアプローチ

モデルクラス

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); 
} 

に初めて細かな作業のすべてを使用していました。ページリフレッシュなしこのフォームに同じ値を入力してサブミットをクリックした場合、

そのモデルの検証が無効であるため、これは同じモデル値に対して2回目以降の試行で機能しません。

"ユーザリスト" System.Int [32]はヌル

は、どのように私はページ指向(RedirecToAction())することなく、適切にこのテキスト領域の値をクリアすることができます取得としてその旨のエラーが

+0

は、デフォルトコンストラクタをしていますか? – BillRuhl

+0

はいこれは1回目の試行と2回目の試行で動作していますが、同じモデルのプロパティでは動作しません – kez

+0

設定を試しましたか?model.userlist = new List ();あなたのモデルを返すときにリストオブジェクトが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); 
    } 

使用法:SomeModelが新しいリスト をインスタンス化するために

// Remove value from both ModelState and the model 
ModelState.RemoveFor((SomeModel m) => m.SampleTextArea); 
model.SampleTextArea = ""; 
関連する問題