我正在開發一個 .NET 應用程式,用戶可以在其中填寫請求(表單)。一旦用戶點擊“提交”。目標是將 POST 請求發送到函式應用(由 PowerShell 驅動)。如果 post 請求成功,它將回傳請求的 id。
我想使用這個 Id 來查詢發送到函式應用程式的請求 (GET) 的狀態。一旦用戶點擊提交,它應該自動將他們重定向到詳細資訊頁面,在那里他們可以查看他們的請求狀態。
這是我要將請求路由到的控制器:
namespace AzDeployManager.Web.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class DeploymentController : ControllerBase
{
public string ReceiveRequest { get; set; }
public string CheckRequest { get; set; }
public DeploymentController(IOptions<AppSettings> settings)
{
this.ReceiveRequest = settings.Value.AzReceiveRequest;
this.CheckRequest = settings.Value.AzCheckRequest;
}
// POST: api/ReceiveRequest
[HttpPost]
[Route("sendrequest")]
public async Task<IActionResult> OnPostAsync([FromBody] Deployment deployment)
{
using var http = new HttpClient();
var data = new Deployment
{
};
//var content = new StringContent(JsonConvert.SerializeObject(deployment));
var content = new StringContent(JsonConvert.SerializeObject(data));
content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
var request = http.PostAsync(ReceiveRequest, content);
var response = await request.Result.Content.ReadAsStringAsync();
return Ok(response);
}
}
}
在控制器中顯示的 http 帖子中,我可以通過除錯查看資料。我現在在根據需要自定義有效負載時遇到問題:
{
"data": {
"name1": "val1",
"name2": "val2"
},
"name3": "val3"
}
任何指導都會在這里有所幫助。
uj5u.com熱心網友回復:
可以使用jQuery將表單的鍵值對序列化成陣列,然后決議成json物件。
<script>
function getdata() {
var paramArray = $('#submitreq').serializeArray();
var body = {};
$(paramArray).each(function () {
//here
if (this.name.indexOf('\.') > 0) {
body[this.name.split('\.')[1]] = this.value;
} else {
body[this.name] = this.value;
}
});
body['RequestNumber'] = parseInt(body['RequestNumber'])
$.ajax({
type: "POST",
url: "/api/sendrequest",
dataType: "json",
data: JSON.stringify(body),
contentType: "application/json; charset=utf-8",
success: function (response) {
console.log("Success: " response.RequestNumber);
},
error: function (req, status, error) {
console.log("Error occured: " status "" req.responseText);
}
});
}
</script>
因為fieldset設定為disabled,不會自動序列化,可以在fieldset外加一個隱藏的輸入框。
<form id="submitreq" method="post">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<input type="hidden" asp-for="Deployment.RequestNumber" class="form-control" />
<!--...-->
<input type="button" name="name" value="submit" onclick="getdata()" />
</form>

轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/415873.html
標籤:
上一篇:嘗試激活“Student.Controllers.MyController”時無法決議“Microsoft.AspNetCore.Mvc.ActionContext”型別的服務
