如何使用ajax将枚举值传递给控制器​​?

时间:2015-05-25 11:29:18

标签: c# asp.net-mvc asp.net-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)
{   
}
  

错误:参数字典包含参数的空条目   'FindSection'为非可空类型'System.Int32'的方法   'System.Web.Mvc.ActionResult Generate(Int32)'

我知道我可以直接传递1但我不想硬编码,因为将来如果我需要传递任何其他的东西然后 我必须改变代码。

我该怎么办?

2 个答案:

答案 0 :(得分:4)

您只需要传递所需项目的索引。

public ActionResult Generate(Section section)
{   

}

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

答案 1 :(得分:1)

将操作代码更改为:

public ActionResult Generate(Section Section) {  }

也不要在ASP.NET MVC中使用硬编码的URL,而是使用url helper:

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

修改:如果无法更改方法参数,请使用ajax方法中的正确名称:

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