2011-06-08 4 views
0

私は現在、自分のビューの1つに投稿したフォームを聴いていて、レコードをチェックしています。私がしたいのは、フォームが実際にビューをレンダリングできるレコードがあり、エラーページだけを表示しない場合です。明らかに、継続コードが空であると思われる "else" ..どのように私がこれを達成できるかについてのアイデア?フォームのサブミットを防ぎ、Ajaxでレコードをチェックし、レコードが残っているかどうかASP.NET MVC

実際にAJAXを傍受して投稿するJS関数です。

$('form#search-form').submit(function (evt) { 
     $.ajax({ 
      type: 'POST', 
      url: '<%: Url.Action("Details","SpecialtyTrack") %>', 
      data: $(this).serialize(), 
      success: function (response) { 
       if (response.results == 0) { 
        $('#error').fadeOut('fast'); 
        $("#error").fadeIn('slow'); 
       } 
       else { 
        $('#error').hide(); 

       }; 

      }, 
      error: function (response) { 
       alert(response); 
      } 
     }); 
     evt.preventDefault(); 

    }); 

ここでは私のコントローラのコードです:

public ActionResult Details(string searchParameter) 
    { 

     var sP = this.spRepo.findSpecialtyTrack(searchParameter); 
     try 
     { 
      var record = sP.FirstOrDefault(); 
      ViewData["directoryID"] = record.DirectoryArtItem.DirectoryCanvass.DirectoryEdition.DirectoryID; 
      ViewData["directoryName"] = record.DirectoryArtItem.DirectoryCanvass.DirectoryEdition.Directory.Name; 

      return View(sP); 
     } 
     catch (NullReferenceException) 
     { 

      return Json(new { 
       results = 0 
      }); 
     } 


    } 

答えて

1

セットResponse.StatusCodeあなたの漁獲量= 500、それはjQueryのAJAX呼び出しでエラーコールバックをトリガします。その後、あなたはその警告をどこに置いても問題を処理することができます。それはあなたのValidateActionから

<% using Ajax.BeginForm("ValidateAction",new AjaxOptions{ UpdateId="HolderWhereSubmitButtonWillBe"}){ 
%> 

validation page 
<%}%> 

応答が

<div id="HolderWhereSubmitButtonWillBe"> 
here will be the ajax call code and button to submit via ajax(all as partail view send as reponse for validation 
</div> 

として部分図を返却する必要がある場合

public ActionResult Details(string searchParameter) 
{ 

    var sP = this.spRepo.findSpecialtyTrack(searchParameter); 
    try 
    { 
     var record = sP.FirstOrDefault(); 
     ViewData["directoryID"] = record.DirectoryArtItem.DirectoryCanvass.DirectoryEdition.DirectoryID; 
     ViewData["directoryName"] = record.DirectoryArtItem.DirectoryCanvass.DirectoryEdition.Directory.Name; 

     return View(sP); 
    } 
    catch (NullReferenceException) 
    { 
     Response.StatusCode = 500; 
     return Json(new { 
      results = 0 
     }); 
    } 
} 
0

私は、Ajaxリクエストなど、他の検証パート/として2つのアクション 1として、それを解決するだろうまた、私は何かを追加します

if(!modelstate.isvalid)返信表示()

関連する問題