[英]C# WebApi receive json from C# MVC through body
我正在嘗試讓我的C#MVC將模型以JSON x-www-form-urlencoded
發送的數據發送到我的Web api,如果我從郵遞員發布到該Web api可以正常工作,但我無法將其發送到通過MVC控制器發送。
我正在嘗試通過這種方式:
控制器:
public ActionResult Update(Models.CaseModel caseModel, int id)
{
string date = caseModel.DOB.ToString("dd-MM-yyyy");
string url = "http://10.0.2.31/testwebapi/api/case/UpdateCasePersonal/";
var json = new JavaScriptSerializer().Serialize(caseModel);
WebClient wc = new WebClient();
var data = wc.UploadString(url, json);
return Redirect(Url.Content("~/Case/Personal/" + id));
}
型號類別:
public class CaseModel
{
public int Caseid { get; set; }
public string Title { get; set; }
public string Forename { get; set; }
public string Surname { get; set; }
public string Postcode { get; set; }
public string Telephone { get; set; }
public string Email { get; set; }
[DisplayFormat( ApplyFormatInEditMode = true, DataFormatString = "{0:dd'-'MM'-'yyyy}")]
public DateTime DOB { get; set; }
public string Mobile { get; set; }
public string MaritalStatus { get; set; }
public string LoanPurpose { get; set; }
}
C#Web API:
[HttpPost]
[Route("UpdateCasePersonal/")]
public object UpdateCasePersonal([FromBody] PersonalModel personal)
{
using (SqlConnection con = new SqlConnection(conString))
{
con.Open();
var query = $@"UPDATE TestDB.dbo.[crm-data] SET Title=@Title, Forename=@Forename, Surname=@Surname, Telephone=@Telephone, Email=@Email, Mobile=@Mobile, DOB=@DOB, LoanPurpose=@Purpose, MaritalStatus=@Marital WHERE Caseid=" + personal.CaseID;
using (SqlCommand cmd = new SqlCommand(query, con))
{
cmd.Parameters.Add("@Title", SqlDbType.NVarChar, 50).Value = personal.Title;
cmd.Parameters.Add("@Forename", SqlDbType.NVarChar, 50).Value = personal.Forename;
cmd.Parameters.Add("@Surname", SqlDbType.NVarChar, 50).Value = personal.Surname;
cmd.Parameters.Add("@Email", SqlDbType.NVarChar, 50).Value = personal.Email;
cmd.Parameters.Add("@Telephone", SqlDbType.NVarChar, 50).Value = personal.Telephone;
cmd.Parameters.Add("@Mobile", SqlDbType.NVarChar, 50).Value = personal.Mobile;
cmd.Parameters.Add("@DOB", SqlDbType.Date, 50).Value = personal.DOB;
cmd.Parameters.Add("@Purpose", SqlDbType.NVarChar, 50).Value = personal.LoanPurpose;
cmd.Parameters.Add("@Marital", SqlDbType.NVarChar, 50).Value = personal.Marital;
cmd.CommandType = CommandType.Text;
var dtb = new DataTable();
var da = new SqlDataAdapter(cmd);
da.Fill(dtb);
return "Updated";
}
}
}
C#Web Api模型:
public class PersonalModel
{
[JsonProperty("CaseID")]
public string CaseID { get; set; }
[JsonProperty("Title")]
public string Title { get; set; }
[JsonProperty("Forename")]
public string Forename { get; set; }
[JsonProperty("Surname")]
public string Surname { get; set; }
[JsonProperty("Postcode")]
public string Postcode { get; set; }
[JsonProperty("Telephone")]
public string Telephone { get; set; }
[JsonProperty("Email")]
public string Email { get; set; }
[JsonProperty("DOB")]
public string DOB { get; set; }
[JsonProperty("Mobile")]
public string Mobile { get; set; }
[JsonProperty("Marital")]
public string Marital { get; set; }
[JsonProperty("LoanPurpose")]
public string LoanPurpose { get; set; }
}
我不斷收到錯誤
遠程服務器返回錯誤:(415)不支持的媒體類型。
為什么會這樣,我該如何解決?
似乎您尚未在WebClient
上設置Content-Type
標頭。
wc.Headers.Add("Content-Type","x-www-form-urlencoded");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.