2016-11-18 3 views
0

私は多くのパラメータを持つコントローラアクションを持っています。私はパラメータが渡されない場合、別のビューを返すしたいです。私は、1行のコードで何も判断しないために各パラメータをチェックするのではなく、これを検出する必要があります。MVC URLパラメータが渡されなかったことを検出する方法

public ActionResult Index(SearchViewModel model) 
{ 
    // doesn't work 
    if (model.Equals(new SearchViewModel())) return View("differentview", model); 

または、別の設計アプローチをとるべきですか?私は検索コントローラとSearchResultsコントローラを持っています。私はそれらを、同じコントローラに結合して、渡されたものに基づいて別のビューを返します。私はそれを別のやり方にするべきですか?それをやっている大人のウェブサイトはどうですか?

+0

''(モデル== nullの)場合は? –

+0

モデルは決してnullではありません –

+0

'SearchViewModel'は' IComparerT '(またはIComparable ')を実装する必要があります。 –

答えて

-1

( モデル== NULL || model.ToString()== "" || model.GetType()。GetPropertiesの()。任意の(X => AnyNull(x.GetValue(モデル) 場合) ) ) { .......}

+0

モデルは決してnullではなく、ToStringは常にモデルのクラス名を返します。私はモデルが含まれているのでラムダのものが動作することを疑う新しいリストに初期化された文字列のリスト –

+0

AnyNullのようなものはありません –

+0

したがって、文字列のリストが空のコレクションに自動初期化されないようにモデルを変更し、 (x => x.GetValue(model)!= null)) ' –

-1

モデルのプロパティを作成し、データアノテーションと[必須]に設定します。モデルの状態が有効であるかどうかを確認するには、コントローラのチェックで

public class SearchModel{ 
[Required,AllowHTml] 
public string SearchTerms {get;set;} 
} 

if(!ModelState.IsValid)return new HttpStatusCodeResult(HttpStatusCode.BadRequest); 
+0

https://www.asp.net/mvc/overview/getting-開始/導入/開始 –

関連する問題