假設我有一個ASP.NET MVC 3控制器,看起來像這樣如何以x-www-form-urlencoded格式對模型進行編碼,以便ASP.NET MVC操作可以使用它?
public class MyController : Contoller
{
public ActionResult Edit(MyModel model)
{
/* doing some stuff with the model */
}
}
這個模型看起來像這樣
public class MyModel
{
public string Property1 { get; set; }
public string Property2 { get; set; }
public ThatModel Property1 { get; set; }
public List<ThisModel> BunchOfThisModel { get; set; }
}
public class ThatModel
{
public string Property1 { get; set; }
public string Property2 { get; set; }
public string Property3 { get; set; }
public string Property4 { get; set; }
public string Property5 { get; set; }
public string Property6 { get; set; }
}
public class ThisModel
{
public string Property1 { get; set; }
public string Property2 { get; set; }
}
不ASP.NET MVC或.NET(V4是確定的,V4。 5)不提供任何內置的方式來編碼模型(在這種情況下稱爲MyModel),以便它可以以表單url編碼(又名x-www-form-urlencoded)的形式發送到一個動作中?一個例子是「property1 = abc & property2 = def」。但是,在將請求解碼回模型時,ASP.NET MVC有自己的方法來處理嵌套模型等。假設我使用自.NET 1.1以來提供的WebRequest/WebResponse API來模擬瀏覽器。
從本質上說,我想建立的測試要求,以驗證
- 一些數據被排除通過有約束力的,如果需要的話
- 防僞造標記設置,如果需要的話
- 惡意數據相應處理
注意:ASP.NET Web API在此階段未被使用。因爲我正在爲現有應用程序編寫(集成)測試,因此將模型作爲JSON,XML或其他替代格式發送不適用於該問題。
我感興趣的是如何序列化的模型,因此它可以在被髮送到服務器「X WWW的形式,進行了urlencoded」格式由ASP.NET MVC Action處理,類似於將數據發佈到該操作的瀏覽器表單,而不必更改服務器。也許我的問題有點不清楚。 – bloudraak
啊,是的 - 抱歉誤會了:)再次誤解它的風險......你可以直接使用FormCollection屬性嗎? – leon
我認爲你正朝着正確的方向前進。問題是如何將一個模型序列化到客戶端的FormCollection中,以便它可以在服務器上反序列化爲該模型。一旦知道我可以弄清楚如何將FormCollection轉換爲「x-www-form-urlencoded」請求。 – bloudraak