Javascript HttpPost控制器参数空ASP.NET核心MVC
我正在为模式对话框上的按钮编写javascript函数。按钮的代码为: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
<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中的名称传递了值。。谢谢!:)