我想将我的枚举值传递给控制器。
我的模型中有这个枚举:
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但我不想硬编码,因为将来如果我需要传递任何其他的东西然后 我必须改变代码。
我该怎么办?
答案 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 }
});