Javascript 在视图中读取返回值;从控制器AJAX/ASP.NET更新新
由selectbox调用进入函数“getDepAndMan()”Javascript 在视图中读取返回值;从控制器AJAX/ASP.NET更新新,javascript,asp.net,json,ajax,asp.net-core,Javascript,Asp.net,Json,Ajax,Asp.net Core,由selectbox调用进入函数“getDepAndMan()” 有一个从选择框中获取的值(works) 调用控制器“GetDepartmentAndManager”(works)中的函数 控制器返回值(工作) {Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryable我发现在GetDepartmentAndManager中没有使用传递的参数userID: var danePracownika = ... .Where(x =>
{Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryable我发现在
GetDepartmentAndManager
中没有使用传递的参数userID
:
var danePracownika = ... .Where(x => x.Id == IntIdCzlowieka)...
应该是,其中(x=>x.Id==userId)
接下来我想到的是您在控制器操作中意外获得的值;根据JS代码,我想说这不是您传递的员工ID,而是字符串化对象{“nazwaValueId”:…}
在最好的情况下,将由服务器处理,您将获得原始字符串作为userId
的值(除非您定义了IModelBinder
类,该类将处理从strigified{“nazwaValueId”:…}
到该字段值的转换,您可以找到更多信息)
哦,顺便说一句-请尽量避免混合语言。我在公司有一个朋友,他被迫使用德语项目,他们的所有代码都是用德语编写的-你肯定不会喜欢使用它。但是如果这是一个仅由PL为PL制作的项目,我认为这是一种可以接受的方法
此外,我强烈建议您不要使用HTTPPOST
方法获取数据。长话短说,有一个惯例,即GET
请求用于获取数据,您可以在不影响国家的情况下调用它(作者:阿尔·尼·帕米·塔姆))而POST
用于保存/修改数据,返回时应始终重定向到GET
方法。您可以阅读更多信息
编辑:
好的,出于某种原因,我发现当前表单中的调用不是以正文形式发送数据,而是以表单形式发送数据。我不知道,我不使用jQuery。但下面是请求:
所以我把行动的签名改为
public ActionResult GetDepartmentAndManager([FromForm]字符串用户ID)
开始工作。也许在你这方面,它工作得很好,我不知道。但我发现,在向客户发送响应时,我们最终得到了……以下结果:
因此,您可以看到Ajax或服务器将JSON键更改为kebabCase而不是PascalCase,这就是为什么您会得到未定义的值。因为您正在读取的属性不存在。只需查看它:alert(danePracownika.userdepartment+“”+danePracownika.userManager);
更新:
我检查过了,这不是服务器的故障:
不清楚您实际上在问什么。您如何在Ajax中解包从控制器发送的信息?因为它对我来说工作不正常:(@krolPodGora)您可以直接传递SelectBox
var userId=$(“#idName”).dxSelectBox(“实例”).option(“value”)
然后数据:{“userId”:userId}
但我需要另一面,从控制器到Ajax,我无法读取那里的数据
[HttpPost]
public ActionResult GetDepartmentAndManager(string userId)
{
dynamic serializer = JsonConvert.DeserializeObject<IDictionary>(userId);
var IdCzlowieka = serializer["nazwaValueId"];
int IntIdCzlowieka = Convert.ToInt32(IdCzlowieka);
var danePracownika = _uzytkownicyContext.Uzytkownicy.Where(x => x.Id == IntIdCzlowieka).Select(s => new
{
UserDepartament = s.Departament,
UserManager = s.ManagerLogin
});
return Json(danePracownika);
}
var danePracownika = ... .Where(x => x.Id == IntIdCzlowieka)...