1

だから私は動作する検証付きのAjaxフォームを持っています。私の問題は私の POST アクションです:

[HttpPost]
public ActionResult AddUpdateConfigs(StorageConfigurationModel modelbind)
{
    if (ModelState.IsValid)
    {
       //blablabla more code
    }
    else
    {
        return PartialView("cbpnlNewUpdateConfigs",modelbind);
    }
}

モデルが有効な場合に私が行うことの 1 つは、値 (たとえば、私が持っている UNC パス) を使用しようとすることであり、その UNC パスが存在するかどうかを確認する必要があるため、次のようにします。

    try
    {
        DirectoryInfo dir = new DirectoryInfo(modelbind.Location);
        if (dir.Exists)
        {
            //bla bla bla
        }
        else
        {
            return //something I dont know what
        }
    }
    catch (Exception j)
    {
        return //something I dont know what
    }

したがって、型に一致するために何が返さActionれ、クライアント側で適切なメッセージが返されるのかわかりません。

何か案は?

4

4 に答える 4

2

にエラーを追加できますModelState:

ModelState.AddModelError(string.Empty, "Path does not exist.");

ここで重要なのは、 for として使用することstring.Emptyです。keyModelState.AddModelError

そしてそれをビューに表示します:

@Html.ValidationSummary()

このようにして、モデルが有効でない場合に使用するのと同じビューを使用できます ( !ModelState.IsValid)。

ソース: ModelState.AddModelError - プロパティ以外のエラーを追加するにはどうすればよいですか?

于 2013-06-12T14:41:59.203 に答える
0

最初の条件では、HttpStatusCode 列挙型と NotFound 定数を使用できます。

http://msdn.microsoft.com/en-us/library/system.net.httpstatuscode.aspx

例外について、特定の HTTP エラー応答コードを使用する場合は、例外が何であるかを正確に調べる必要があります。

それ以外の場合は、InternalServerError を使用して、一般的なサーバー エラーが発生したことを示すことができます。

お役に立てれば

シャバズ

于 2013-06-12T14:38:16.130 に答える
0

ajax 呼び出しなので、JSON 形式でレスポンスを送ってもかまいません。

if(someConditionTrue)
{
  //Make changes to DB 
  return Json(new { Status="Success"});
}
else
{
 return Json(new { Status="Error", Message="Directory not found"});
}

また、クライアント側で結果を確認し、適切な情報をユーザーに表示できます。

$.post("someValidUrl",$("#form1").serialize(),function(response){
  if(response.Status=="Error")
  {
     alert(response.Message);
  }
});

JSON結果で部分ビューのマークアップを送信し(成功した場合)、それを使用して、コンテンツを更新するdivのhtmlを置き換えることができます。そうする拡張メソッドについては、この回答を確認してください。

于 2013-06-12T14:43:55.567 に答える