表單傳值給Action時,ModelBinding要注意的東西,用不好可是會Binding到天荒地老都還接不到參數阿。
1.當ViewModel為多階層時,如上面範例的Index.SearchCon。如果Action的接收參數的型別為Index.SearchCon時,後端如果要能接收的到表單資料的話,表單物件的name要為SearchCon.Func_Name,如果name跟Model對應不起來的話,會接不到參數。
[Parents_Class.Property Name].[Sub_Class.Property Name]。
例如:
1.參數結構為單一階層結構
2.參數結構為單多層結構
如果Action參數型別為ProFunction.Index的話,那麼表單物件的name就要為SearchCon.Func_Name
如果覺得另外取表單物件的name這樣很麻煩的話,其實也可以直接把ViewModel的內容轉成Json字串,MVC的ModelBinding會自己mapping,到Action時再把他轉回物件這樣也可以。
或是可以再ViewModel加上Attribute來另外指定Property的BindingName(參考ref.連結2),但這個方法我是沒有用過。
ref:
[鐵人賽Day10] - Model Binding
ASP.NET MVC Model Binding with Dashes in Form Element Names