4

私のコントローラーでは、ユーザーが最初に選択したパラメーターに基づいてリストをフィルター処理します。それは検索エンジンのようなものです。

リストが0の値を返す可能性があります。これはエラーではありませんが、エラーメッセージなどのメッセージを表示したいのですが、これまでに見つけたのは、c#でModelStateまたはModelStateDictionaryを使用していることだけで、これも例外が必要です。しかし、これも例外ではなく、ただの条件なので、少し戸惑っています。

私が欲しいものを視覚的に確認できるように、少しコードを書きます。

    if(listOBJS.count == 0)
    {
        // DISPLAY THE ERROR!
        PopulateDDL1();
        PopulateDDL2();
        return View(listOBJS);
    }

そうです、私がやりたいことについてです。どうすれば続行できますか?アドバイスありがとうございます。

4

2 に答える 2

5

ModelStateは例外を必要としません。必要なメッセージを含むModelstateエラーを追加し、通常の方法を使用してModelState.isValidをチェックして続行するか、ビューに戻ってエラーを表示するかを決定できます。

ModelState.AddModelError("", "Your Error Message");

ViewBagまたは、またはViewDataを使用してメッセージに穴を開けることもできます。

ViewBag.ErrorMessage = "Your Error Message";
ViewData["ErrorMessage"] = "Your Error Message";

次に、ビューでそれらを表示できます

@Html.ValidationMessage("ModelName")
@ViewData["ErrorMessage"]
@ViewBag.ErrorMessage
于 2013-02-12T20:47:41.383 に答える
3

Model を渡さず、ModelState で確認したくない場合は、メッセージを ViewBag に渡し、ビューでその値を確認するだけです。そこにある場合は、ビューに表示します。

コントローラ:

public FileResult Download(string fileName)
{
   if (string.IsNullOrEmpty(fileName) || !File.Exists(fileName))
   {
       ViewBag.Error = "Invalid file name or file path";
       RedirectToAction("Index");
   }

   // rest of the code
}

インデックス ビュー

@if (ViewBag.Error != null)
{
    <h3 style="color:red">@ViewBag.Error</h3>
}
于 2015-10-12T18:06:03.583 に答える