我有一个下拉列表,它遍历枚举列表,选择该列表时会将枚举作为字符串发送。(作为“ this”)
然后我获取该对象的值以获取字符串值。
这是它的样子
选择下拉列表:
<select id="userServicesDropDownAuth" class="browser-default custom-select"
asp-for="Service" onchange="validateUserAuth(this, '@username', '@password')">
@{
<option style="display:none"></option>
foreach (var item in services)
{
<option>@item.ToString()</option>
}
}
</select>
Ajax调用:
var service = service.value;
$.ajax({
url: '/Actions/CheckServiceValidation',
method: 'POST',
data: service ,
dataType: 'text',
contentType :'text',
success: function (data) {
最后是控制器方法:
[HttpPost]
public bool CheckServiceValidation(string service)
{
var session = SessionManager.GetSession(service);
if (session== service)
return true;
else return false;
}
在controller方法中接收到的字符串为null,当我将其从字符串更改为Service对象(枚举)时,它将始终返回第一个索引。
枚举类:
public enum Service : int
{
Badoo = 0,
Tinder = 1,
Grinder = 2,
OkCupid = 3
}
我究竟做错了什么?
编辑:
即使我从下拉列表中选择索引3,传递给控制器的服务也始终为0。
原来,我必须给data属性赋予与控制器内部相同的名称。
var service = service.options[service.selectedIndex].text;
$.ajax({
url: '/Actions/CheckServiceValidation',
method: 'POST',
data: { 'service': service } ,
dataType: 'text',
success: function (data) {
而已。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句