我對我的項目中的常見視圖有一點不同的看法。它像所有其他人一樣使用Ajax.StartForm
。但在這種情況下,我只想發送一個以JSON解析的JavaScript對象,而不是我表單的字段值。ASP.Net MVC Ajax表單發送JSON而不是字段值
爲了說明這一點,我想這步驟:在這種形式下,當提交按鈕被按下,默認提交事件將被攔截和JavaScript對象將被創建 - 從一些自定義部件聚集值 - 發送到行動。然後,該對象將會像data: JSON.stringify(that_object)
一樣發送,就像jQuery.ajax
一樣。
問題是我不想使用jQuery.ajax
,我想使用MVC的Ajax.StartForm
,因爲我的應用程序會自動激活一些函數和驗證。
有辦法完成那種行爲嗎?
如果這是不可能的,恐怕我將被迫將該JSON解析對象作爲字符串存儲在隱藏字段中以提交它。
UPDATE:
這是我的ViewModel:
public class ProcessWizardViewModel
{
public long ProcessId { get; set; }
public List<long> ProcessIds { get; set; }
public List<ProcessItemWizardViewModel> Items { get; set; }
public ProcessWizardViewModel()
{
ProcessIds = new List<long>();
Items = new List<ProcessItemWizardViewModel>();
}
}
public class ProcessItemWizardViewModel
{
public long Type { get; set; }
public bool Dependence { get; set; }
public long ProcessCultureId { get; set; }
public ProcessItemWizardViewModel() { }
}
ProcessIds
來自使用複選框選擇一個網格,Items
來自一個樹形視圖複選框的選擇。
是的,它會但我不能。這是一個包含兩個小部件的視圖,我必須將它們的數據合併到一個對象中,以便MVC序列化爲視圖模型。 – DontVoteMeDown
你可以發佈控制器和視圖模型嗎?還有其他方法來處理它。 –
剛用視圖模型更新了這個問題。我不知道控制器在這裏是否重要,這裏有一些問題。實際上它將對象作爲一個字符串接收並對其進行反序列化。 – DontVoteMeDown