剃刀页面的OnPost

时间:2020-03-29 10:38:47

标签: asp.net-mvc asp.net-core asp.net-web-api razor razor-pages

我正在尝试将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

1 个答案:

答案 0 :(得分:2)

在.net核心异步发布中,httpcontent参数包含请求正文。您应该像这样格式化要提交的数据;

var content = new StringContent(JsonConvert.SerializeObject(member), UnicodeEncoding.UTF8, "application/json");
var postTask = client.PostAsync("Member", content);