Было обнаружено несколько действий, соответствующих запросу на вход в контроллер.Jquery

Программирование на jquery
Ответить
Anonymous
 Было обнаружено несколько действий, соответствующих запросу на вход в контроллер.

Сообщение Anonymous »

Кажется, я хожу кругами, и переход в режим отладки совсем не помогает. Глядя на контроллер и модель для участников, я не вижу никаких повторяющихся подписей (блоки кода ниже), и мне кажется, что вызов ajax (JQuery) найден. Если бы кто-то мог указать мне правильное направление, я был бы очень признателен.
Я вижу, что выполняется вызов API и что он возвращает код 500 с полной ошибкой. ниже.
Я также пробовал очистить, перестроить, выполнить полную очистку кеша, перезапустить пул приложений и перезапустить компьютер, на котором я это запускаю. В основном просто для того, чтобы убить как можно больше соломинок.
Полная ошибка, которую я получаю:
{
"Message": "An error has occurred.",
"ExceptionMessage": "Multiple actions were found that match the request: \r\nGet on type Portal.api.MembersController\r\nGet on type Portal.api.MembersController",
"ExceptionType": "System.InvalidOperationException",
"StackTrace": " at System.Web.Http.Controllers.ApiControllerActionSelector.ActionSelectorCacheItem.SelectAction(HttpControllerContext controllerContext)\r\n at System.Web.Http.ApiController.ExecuteAsync(HttpControllerContext controllerContext, CancellationToken cancellationToken)\r\n at System.Web.Http.Dispatcher.HttpControllerDispatcher.d__15.MoveNext()"
}

Вызов JQuery/Javascript
function fetchMemberDetails(el) {
var puid = $(el).val();
var pattern = /^[a-z\'\-]+[0-9]{3}$/i;

if (pattern.test(puid)) {
$.ajax({
type: 'GET',
url: baseMembersURL + puid,
dataType: "json",
success: function (data) {
$.map(JSON.parse(data), function (i, item) {
('#spanNewName').text(item.Name);
})
}
});
}
}

Контроллер участников
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;
using System.Web.Http.Results;
using System.Web.Script.Serialization;

namespace Portal.api
{
public class MembersController : ApiController
{
JavaScriptSerializer jss = new JavaScriptSerializer
{
MaxJsonLength = int.MaxValue
};

// GET api/
public void Get()
{
}

public JsonResult Get(object id)
{
if (Central.GetSession("PermissionLevel", "PORTAL") == "" && Central.GetSession("PermissionLevel", "PORTAL").All(char.IsDigit) && int.Parse(Central.GetSession("PermissionLevel", "PORTAL")) >= 2)
{
List rows = new List();
Dictionary row;
Models.TeamViewer.Member member = new Models.TeamViewer.Member(id);
row = new Dictionary
{
//return objects
};

rows.Add(row);

return Json(jss.Serialize(rows));
}
else
{
// Error handling if conditions not met
}
}

// POST api/
public void Post([FromBody] string value)
{
}

// PUT api//5
public void Put(int id, [FromBody] string value)
{
}

// DELETE api//5
public JsonResult Delete(int id, [FromBody] string value)
{
if (Central.GetSession("PermissionLevel", "PORTAL") != "" && Central.GetSession("PermissionLevel", "PORTAL").All(char.IsDigit) && int.Parse(Central.GetSession("PermissionLevel", "PORTAL")) >= 2)
{
List rows = new List();
Dictionary row;
Models.TeamViewer.Member member = new Models.TeamViewer.Member(id);

//Delete Member
}

return Json(jss.Serialize(value));
}
}
}

Модель участников
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Data;
using System.Linq;

using Portal.Modules;

namespace Portal.Models.TeamViewer
{
public class Member
{
private string sql;
private DataTable dt = new DataTable();
private readonly List sqlParams = new List();

public int ID { get; set; }
public string PUID { get; set; }
public string Name { get; set; }
public string Skills { get; set; }
public List Teams { get; set; }

public Member()
{

}

public Member(object id)
{
if (id.GetType() == typeof(int))
{
ID = (int)id;
FetchByID();
}
else if (id.GetType() == typeof(string))
{
PUID = (string)id;
FetchByPUID();
}
}

public Member(string puid, string name, string skills)
{
ID = 0;
PUID = puid;
Name = name;
Skills = skills;
}

public void FetchByID()
{
sqlParams.Clear();
sqlParams.Add(new SqlParameter("@ID", ID));
sql = "SELECT PUID, Name, Skills, FkRank, LongRank, ShortRank " +
" FROM TeamPlanner_Members" +
" WHERE ID = @ID";
dt = SQLDB.FetchMultipleValues(sql, Central.userDB, sqlParams);

if (dt.Rows.Count > 0)
{
PUID = (string)dt.Rows[0]["PUID"];
Name = (string)dt.Rows[0]["Name"];
Skills = (string)dt.Rows[0]["Skills"];

Teams = GetTeamList();
}
}

public void FetchByPUID()
{
sqlParams.Clear();
sqlParams.Add(new SqlParameter("@PUID", PUID));
sql = "SELECT ID, Name, Skills " +
" FROM TeamPlanner_Members" +
" WHERE PUID = @PUID";
dt = SQLDB.FetchMultipleValues(sql, Central.userDB, sqlParams);

if (dt.Rows.Count > 0)
{
ID = (int)dt.Rows[0]["ID"];
Name = (string)dt.Rows[0]["Name"];
Skills = (string)dt.Rows[0]["Skills"];

Teams = GetTeamList();
}
}

public void Save()
{
sqlParams.Clear();
sqlParams.Add(new SqlParameter("@PUID", PUID));
sqlParams.Add(new SqlParameter("@Name", Name));
sqlParams.Add(new SqlParameter("@Skills", Skills));

if (ID != 0)
{
sql = "INSERT INTO TeamPlanner_Members(PUID, Name, Skills) " +
" VALUES(@PUID, @Name, @Skills)";
SQLDB.ExecuteSQL(sql, Central.userDB, sqlParams);
SaveTeamList();
}
else
{
string ret;

sqlParams.Add(new SqlParameter("@ID", ID));
sql = "UPDATE TeamPlanner_Members " +
" SET PUID = @PUID" +
" , Name = @Name" +
" , Skills = @Skills" +
" WHERE ID = @ID";
ret = SQLDB.ExecuteSQL(sql, Central.userDB, sqlParams);

if (ret.All(char.IsNumber))
{
ID = int.Parse(ret);
SaveTeamList();
}
}
}

private List GetTeamList()
{
List teamList = new List();

sqlParams.Clear();
sqlParams.Add(new SqlParameter("@Member", ID));
sql = "SELECT FkTeam FROM TeamPlanner_Team_Member WHERE FkMember = @Member ORDER BY Ordering";
dt = SQLDB.FetchMultipleValues(sql, Central.userDB, sqlParams);

foreach (DataRow row in dt.Rows)
{
teamList.Add(new Team((int)row["FkTeam"]));
}

return teamList;
}

private void SaveTeamList()
{
sqlParams.Clear();
sqlParams.Add(new SqlParameter("@Member", ID));
sql = "DELETE FROM TeamPlanner_Team_Member WHERE FkMember = @Member";
SQLDB.ExecuteSQL(sql, Central.userDB, sqlParams);

foreach (Team team in Teams)
{
sqlParams.Clear();
sqlParams.Add(new SqlParameter("@Member", ID));
sqlParams.Add(new SqlParameter("@Team", team.ID));
sql = "INSERT INTO TeamPlanner_Team_Members(FkMember, FkTeam) VALUES (@Member, @Team)";
SQLDB.ExecuteSQL(sql, Central.userDB, sqlParams);
}
}

public void AddToTeamList(int teamID)
{
Teams.Add(new Team(teamID));
}

public void RemoveFromTeamList(int teamID)
{
Teams.Remove(new Team(teamID));
}

}
}

Регистрация маршрута в Global
routes.MapHttpRoute(
name: "APIs",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);


Подробнее здесь: https://stackoverflow.com/questions/793 ... controller
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Jquery»