2016-11-18 49 views
0

我有很多參數的控制動作沒有URL參數。如果沒有參數傳遞,我想返回一個不同的視圖。我想要一行代碼來檢測這個,而不是檢查每個參數,以確定沒有通過。MVC如何檢測通過

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

或者我應該去了解不同的設計方法?我有一個搜索控制器和一個SearchResults控制器,我將它們組合到同一個控制器中,它將根據傳遞給它的內容返回不同的視圖。我應該以不同的方式去做嗎?那裏的所有大男孩網站如何做呢?

+0

'如果(型號== NULL)'? –

+0

model is never null –

+0

您的'SearchViewModel'需要實現'IComparerT''(或IComparable ') –

回答

-1

如果 ( 模型== NULL || model.ToString()== 「」 || model.GetType()。的GetProperties()。在任何(X => AnyNull(x.GetValue(模型)) ) ) { ....... }

+0

model永遠不會爲null,並且ToString始終只返回模型的類名稱。我懷疑lambda的東西會工作,因爲模型包含字符串清單列表新的列表 –

+0

有沒有這樣的事情AnyNull –

+0

所以我改變了我的模型,以便字符串列表不會自動初始化爲一個空的集合,並且下面的代碼作品:'if(!model.GetType()。GetProperties()。Any(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-開始/引進/工具入門 –