我正在調用一個調用Web API的MVC Web應用程序。在我的Create(POST)方法中,用戶將在數據庫中輸入一些用戶的電子郵件地址。只有在電子郵件尚未存在於數據庫中的情況下,我纔有一張支票才能輸入電子郵件。如果它已經存在,我希望能夠向用戶顯示錯誤消息「電子郵件已存在」。如何處理WebClient響應以向用戶顯示錯誤消息?
我不知道如何當它無法創建一個approveduser處理顯示錯誤信息給用戶的反應如何?我正在嘗試使用try-catch
的情況,但它不起作用。我有ViewBag.Message = error
,我試圖在我的索引視圖中顯示它失敗。但沒有顯示。當我調試時,當數據庫中存在電子郵件時,它甚至不會進入catch
,它只是將我帶到索引視圖。
public ActionResult Create([Bind(Include = "Email,FirstName,LastName")] ApprovedUsers approvedUsers)
{
try
{
using (WebClient client = new WebClient())
{
token = Session.GetDataFromSession<string>("access_token");
client.Headers.Add("authorization", "Bearer " + token);
byte[] response = client.UploadValues(apiUrl, "POST", new NameValueCollection()
{
{ "Email", approvedUsers.Email },
{ "FirstName",approvedUsers.FirstName },
{ "LastName",approvedUsers.LastName }
});
string result = System.Text.Encoding.UTF8.GetString(response);
return RedirectToAction("Index");
}
}
catch
{
return RedirectToAction("Index", new { error = "Email exists" });
}
}
指數行動
public ViewResult Index(string sortOrder, string currentFilter, string searchString, int? page, string error)
{
ViewBag.Message = error;
這是被稱爲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();
}
return CreatedAtRoute("DefaultApi", new { id = approvedUsers.Email }, approvedUsers);
只是想知道什麼呢指數的行動是什麼樣子? –
我在我的文章中添加了Index ViewResult中的一部分代碼。那是你問的嗎? – StraightUp
在進入指數時加入斷點。查找您嘗試傳入的內容。您正試圖將對象傳遞給不需要的方法。相反,它需要這些:字符串sortOrder,字符串currentFilter,字符串searchString,int?頁面,字符串錯誤。如果你有一個錯誤字符串參數,例如你可以通過這個參數。但是通常有很多參數,最好是創建一個模型並將其傳入。 –