私はWeb APIを呼び出すMVC Web Appを開発中です。私の作成(POST)メソッドでは、ユーザーはデータベース内の一部のユーザーの電子メールアドレスを入力します。電子メールがまだデータベースに存在しない場合にのみ、電子メールを入力するためのチェックがあります。既に存在する場合は、ユーザーに「電子メールが既に存在します」というエラーメッセージを表示する必要があります。エラーメッセージをユーザーに表示するWebClientレスポンスを処理するにはどうすればよいですか?
承認されたユーザーの作成に失敗したときにユーザーにエラーメッセージを表示するためのレスポンスの処理方法がわかりません。私は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
インデックスへのエントリにブレークポイントを設定します。あなたが渡そうとしているコンテンツを探します。オブジェクトを取得していないメソッドにオブジェクトを渡そうとしています。代わりに、以下のものが必要です:string sortOrder、string currentFilter、string searchString、int?ページ、文字列エラー。たとえば、エラー文字列パラメータがある場合は、それを渡すことができます。しかし、一般的に、その多くのパラメータを使用すると、モデルを作成してinstedに渡す方が良いでしょう。 –