2015-05-25 110 views
2

我想將我的枚舉值傳遞給控制器​​。如何通過ajax將枚舉值傳遞給控制器​​?

我有這個枚舉在我的模型:

public enum Section 
{ 
     Upper, 
     Lower 
}; 

我想通過Ajax我控制器上通過這個值:

$(function() { 
    var section='@Section.Upper'//i want to pass Upper value only to my controller. 
    alert(section) ///output Upper 
$.ajax({ 
       url: '/Section/FindSection', 
       data: { 'Section': section}, 
}); 

在它被存儲1上,0爲數據庫中的表降低。

我的控制器:

public ActionResult Generate(int FindSection) 
{ 
} 

Error:The parameters dictionary contains a null entry for parameter 'FindSection' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Generate(Int32)'

我知道我可以直接傳遞傳遞1,但我不想硬編碼,因爲在未來,如果我需要通過任何其他事情則 再次我必須改變碼。

我怎麼能做到這一點???

+1

嘗試在操作方法中用'Section'替換單詞FindSection,然後再次運行。 –

+0

@HarveySpecter:我不能改變我的參數,因爲我在這麼多地方使用了這個方法 –

+0

你必須在這兩個地方中的任何一個地方改變名字。無論是在控制器的方法名稱還是在ajax調用中。他們需要相同才能得到認可。 –

回答

1

變化的行動代碼:

public ActionResult Generate(Section Section) { } 

也不要使用在ASP.NET MVC硬編碼的網址,利用URL助手代替:

$.ajax({ 
    url: '@Url.Action("Generate", "Section")', 
    data: { 'Section': section } 
}); 

編輯:如果改變方法參數不是一個選項,而是使用ajax方法中的正確名稱:

$.ajax({ 
    url: '@Url.Action("Generate", "Section")', 
    data: { 'FindSection': section } 
}); 
+0

對不起,我不能改變我的方法參數,因爲它是用來在多個地方,要改變它需要在很多地方 –

4

你只需要通過你想要的物品的索引。

public ActionResult Generate(Section section) 
{ 

} 

$(function() { 
    //... 
$.ajax({ 
      url: '/Section/Generate', 
      data: { section: 1} //the controller will receive Super.Lower 
}); 
//.. 
}) 
+0

改變請不要鐵桿這個 –

+0

@Lacy瓊斯對不起,我沒聽懂。你能更清楚嗎? –

+0

我的意思是我不能從ajax這樣傳遞:Section.Upper.passing像這樣從ajax提供錯誤我在我的問題中描述了什麼 –

相關問題