我正在調用一個Web API的MVC Web應用程序。在我的創建(POST
)方法中,用戶將輸入數據庫中某些用戶的電子郵件地址。只有在電子郵件尚未存在於數據庫中的情況下,我纔有一張支票才能輸入電子郵件。如果它已經存在,我希望能夠向用戶顯示錯誤消息「電子郵件已存在」。如何在MVC調用Web API中向用戶顯示錯誤消息?
我以爲HttpStatusCode.NotFound, "Email exists already."
會工作,但我認爲它只會在PostMan中顯示。我如何在MVC端顯示像ViewBag.ErrorMessage
?
API
public IHttpActionResult PostApprovedUsers(ApprovedUsers approvedUsers)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
if (!db.ApprovedUsers.Any(u => u.Email == approvedUsers.Email))
{
db.ApprovedUsers.Add(approvedUsers);
db.SaveChanges();
}
else
{
return Content(HttpStatusCode.NotFound, "Email exists already.");
}
return CreatedAtRoute("DefaultApi", new { id = approvedUsers.Email }, approvedUsers);
MVC創建
public ActionResult Create([Bind(Include = "Email,FirstName,LastName")] ApprovedUsers approvedUsers)
{
using (WebClient client = new WebClient())
{
token = Session.GetDataFromSession<string>("access_token");
client.Headers.Add("authorization", "Bearer " + token);
client.UploadValues(apiUrl, "POST", new NameValueCollection()
{
{ "Email", approvedUsers.Email },
{ "FirstName",approvedUsers.FirstName },
{ "LastName",approvedUsers.LastName }
});
}
return RedirectToAction("Index");
}
您還沒有處理API的響應中創建的操作方法。在返回視圖之前,您需要檢查響應中的狀態碼並在viewbag中設置。 –
@Luke - 他使用Webclient在他的創建控制器中進行調用。 OP:你有沒有這樣分離你的邏輯的理由?如果您正在編寫api和控制器,則沒有理由讓一個控制器調用另一個控制器。你應該在這裏使用一個通用的服務,並從創建控制器調用它。 – 2017-05-31 13:10:38
@AndrewHunter我接手了其他人在我的實習中創建的這個項目。不知何故,我應該在下週完成它,這是一個混亂。特別是我是ASP.Net的新手。 – StraightUp