我正在尝试将MVC转换为剃刀页面。
这是我的MVC示例代码
public ActionResult Register(Member member)
{
if (ModelState.IsValid)
{
using (var client = new HttpClient())
{
client.BaseAddress = new Uri(baseUrl);
var postTask = client.PostAsJsonAsync("Member", member);
postTask.Wait();
var result = postTask.Result;
if (result.IsSuccessStatusCode)
{
return RedirectToAction("Index", "Home");
}
}
}
return View(member);
}
这是我到目前为止已转换为Razor页面的内容
public IActionResult OnPost(Member member)
{
if (ModelState.IsValid)
{
using (var client = new HttpClient())
{
client.BaseAddress = new Uri(baseUrl);
var postTask = client.PostAsync("Member", member);
postTask.Wait();
var result = postTask.Result;
if (result.IsSuccessStatusCode)
{
return RedirectToPage("~/Index");
}
}
}
return Page(member);
}
但是在Razor页面的这一行
var postTask = client.PostAsync("Member", member);
它告诉我错误
无法从“ Models.Member”转换为“ System.Net.Http.Httpcontent”
我可以知道如何解决这个问题吗?我不确定我应该用什么代替 member
答案 0 :(得分:2)
在.net核心异步发布中,httpcontent参数包含请求正文。您应该像这样格式化要提交的数据;
var content = new StringContent(JsonConvert.SerializeObject(member), UnicodeEncoding.UTF8, "application/json");
var postTask = client.PostAsync("Member", content);