Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript HttpPost控制器参数空ASP.NET核心MVC_Javascript_Ajax_Asp.net Core_Asp.net Core Mvc_Http Post - Fatal编程技术网

Javascript HttpPost控制器参数空ASP.NET核心MVC

Javascript HttpPost控制器参数空ASP.NET核心MVC,javascript,ajax,asp.net-core,asp.net-core-mvc,http-post,Javascript,Ajax,Asp.net Core,Asp.net Core Mvc,Http Post,我正在为模式对话框上的按钮编写javascript函数。按钮的代码为: <button type="button" class="btn btn-sm btn-outline-secondary" id="clone" onclick="clone(null, @Model.Id,@Model.CloneId)">Clone</button> 操作方法是: [HttpPost] public

我正在为模式对话框上的按钮编写javascript函数。按钮的代码为:

<button type="button" class="btn btn-sm btn-outline-secondary" id="clone" onclick="clone(null, @Model.Id,@Model.CloneId)">Clone</button>
操作方法是:

[HttpPost]
public ActionResult Clone([FromBody]EditModel model)
{
    //logic
}
public class EditModel
{
    public long Id { get; set; }
    public long CloneId { get; set; }
    public string ValueSetName { get; set; }
}
模型类为:

[HttpPost]
public ActionResult Clone([FromBody]EditModel model)
{
    //logic
}
public class EditModel
{
    public long Id { get; set; }
    public long CloneId { get; set; }
    public string ValueSetName { get; set; }
}
当我尝试调试这段代码时,AJAX函数会正确地获取值,但不会将它们传递给ActionMethod。这可能是什么原因?任何指示都会有帮助。提前谢谢

来自Ms文档:

使用[FromBody] 要强制Web API从请求正文读取简单类型,请将[FromBody]属性添加到参数

这意味着,如果使用FromBody,则只能传递原语参数:

[HttpPost]
public ActionResult CloneValues([FromBody]string text)
{
    //logic
}
你需要的是FromUri

使用[FromUri] 要强制Web API从URI读取复杂类型,请将[FromUri]属性添加到参数。以下示例定义了一种地质点类型,以及从URI获取地质点的控制器方法


要添加[FromUri]Visual Studio要求我安装一个包,我安装了,但现在它为[HttpPost]创建了一个模棱两可的引用,错误是,“HttpPost”是System.Web.Http.HttpPostAttribute和Microsoft.AspNetCore.Mvc.HttpPostAttribute之间的一个模棱两可的引用,您可以键入[System.Web.Http.FromUri]而不是[FromUri]越过模棱两可的界限reference@VertexGames我仍然没有得到ActionMethod中的任何值。是否尝试更改ajax quary中的名称以匹配对象中的名称?Id代替Id,克隆蛋白代替克隆蛋白。。你明白我的意思了。我想你是在用ASP.NETCore3吗
ValueSetName
不会绑定,因为您在JSON上使用了
newValueSet
,因此名称不匹配。您可能正在发送
Id
CloneId
的字符串,这也会失败。我只是猜测…@KirkLarkin是的,更改json数据以匹配EditModel中的名称传递了值。。谢谢!:)