C# Mvc核心Post字符串值
问题:我们可以不使用模型,仅基于C# Mvc核心Post字符串值,c#,asp.net-core,asp.net-web-api,asp.net-core-mvc,C#,Asp.net Core,Asp.net Web Api,Asp.net Core Mvc,问题:我们可以不使用模型,仅基于IActionResult方法的参数名进行绑定吗。从下面我将发布一个字符串到端点,但是它被包装在一个属性为reviewNotes的对象中。我现在有一个工作要做,如下所述 我已经这样设置了终点 [HttpPost("updateassetnotes/{id}")] public IActionResult UpdateAssetNotes(int id, [FromBody]string reviewNotes) { _dat
IActionResult
方法的参数名进行绑定吗。从下面我将发布一个字符串
到端点,但是它被包装在一个属性为reviewNotes
的对象中。我现在有一个工作要做,如下所述
我已经这样设置了终点
[HttpPost("updateassetnotes/{id}")]
public IActionResult UpdateAssetNotes(int id, [FromBody]string reviewNotes)
{
_dataMapper.UpdateAssetNotes(id, reviewNotes);
return ApiSuccess("Updated Review Notes");
}
而客户端就是这样发布的
var url = "/api/cataloguing/updateassetnotes/" + id;
var data = { reviewNotes: self.assetReviewNotes() };
$.ajax({
type: 'POST',
url: url,
data: JSON.stringify(data),
contentType: 'application/json'
}).done(function (resp) {
}).fail(function (resp) {
}).always(function () {
});
但是,如果我将数据更改为:
var data = self.assetReviewNotes();
然后实际上填充了review notes字符串。如前所述,这是我目前正在使用的解决方案。如前所述,我可以创建一个简单的模型,如下所示,并在端点使用它来绑定字符串。我只是想知道是否有一种方法可以直接绑定到基元类型
public class SimpleModel {
public string ReivewNotes {get;set;}
}
显然,正如你在问题中已经指出的那样
var data = { reviewNotes: "foo" };
不同于
var data = "foo";
因为后者是字符串
,前者是具有字符串
属性的对象
代码最直接的解决方案是这一行
data: JSON.stringify(data),
您可以通过执行以下操作将字符串
从对象
中“展开”来解决此问题
data: JSON.stringify(data.reviewNotes),
另一种方法是避免使用
JSON.stringify
,而只处理原始数据的映射。但是,如果您这样做,您可能需要注意映射,并且[FromBody]
装饰器可能需要一些调整,当然还有内容类型
,正如您在问题中已经指出的那样
var data = { reviewNotes: "foo" };
不同于
var data = "foo";
因为后者是字符串
,前者是具有字符串
属性的对象
代码最直接的解决方案是这一行
data: JSON.stringify(data),
您可以通过执行以下操作将字符串
从对象
中“展开”来解决此问题
data: JSON.stringify(data.reviewNotes),
另一种方法是避免使用
JSON.stringify
,而只处理原始数据的映射。但是,如果您这样做,您可能需要注意映射,并且[FromBody]
装饰器可能需要一些调整,以及内容类型
4个月前,我用ASP.NET核心创建了演示,用ajax创建了post数据。Mby it can help you@J.Doe我刚刚尝试实现一个类似于您的解决方案,但它不起作用。我猜是因为我想把路由参数和post数据结合起来。你为什么想要JSON.stringify
没有名字的数据对象?当stringify请求看起来像{“reviewNotes”:“sss”}
而没有reviewNotes=sss
@J.Doe时,ajax代码实际上是一个更广泛的库的一部分,因此它是通用的,以处理一系列模型,这就是stringify存在的原因。我尝试了几种方法,没有使用stringify,只使用数据对象。即使终点有多个变量。两个有效的方法是将单个字符串作为数据对象。或者为问题中提到的终点创建一个简单的模型。我只是好奇这些参数是否可以根据它们的名称进行绑定。4个月前,我用ASP.NET内核创建了演示,用ajax发布了数据。Mby it can help you@J.Doe我刚刚尝试实现一个类似于您的解决方案,但它不起作用。我猜是因为我想把路由参数和post数据结合起来。你为什么想要JSON.stringify
没有名字的数据对象?当stringify请求看起来像{“reviewNotes”:“sss”}
而没有reviewNotes=sss
@J.Doe时,ajax代码实际上是一个更广泛的库的一部分,因此它是通用的,以处理一系列模型,这就是stringify存在的原因。我尝试了几种方法,没有使用stringify,只使用数据对象。即使终点有多个变量。两个有效的方法是将单个字符串作为数据对象。或者为问题中提到的终点创建一个简单的模型。我只是想知道这些参数是否可以根据它们的名字进行绑定。