2017-02-18 1 views
0

私はasp.netのmvc5を使用しています。私はサイトの右側のパネル(レイアウト)にメニューを作成します。ユーザーがメニュー項目をクリックすると、更新ページなしでページを読み込みます。これを行うには、私はAjax.ActionLinkを使用します。ajaxを使用して表示するにはどのようにリダイレクトするのですか?

<aside class="right-panel flexcol"> 
<button class="accordion">Hotels</button> 
    <div class="sub-panel flexcol"> 
@Ajax.ActionLink("View Hotels", "Index", "Hotel", null, new AjaxOptions { HttpMethod = "get", UpdateTargetId = "pageContent" }, new { @class = "sub-menu" }) 
@Ajax.ActionLink("HotelType", "Index", "HotelType", null, new AjaxOptions { HttpMethod = "get", UpdateTargetId = "pageContent" }, new { @class = "sub-menu" }) 

    </div> 

と呼び出し 'ニューホテル' のページのために、私は適切にこれらの作品

@Ajax.ActionLink("Create Hotel", "Create", "Hotel", null, new AjaxOptions { HttpMethod = "get", UpdateTargetId = "pageContent" }, new { @class = "bluelink" }) 

を使用しています。 問題:作成ページを送信すると、このページがコントローラに送信され、モデルが有効でないデータを入力した場合は、レイアウトとCSSのないページを作成するページにリダイレクトされます。私の意見で

@model ... Models.Hotel 
@{ 
ViewBag.Title = "Create"; 
Layout =null; 
} 

コントローラ

public ActionResult Create() 
    { 
     return PartialView(); 
    } 


    [HttpPost] 
    public ActionResult Create(Hotel model) 
    { 
     if (!ModelState.IsValid) 
     { 
      return PartialView(model); 
     } 
     ApplyToDataBase(model, "uspInsertHotel"); 
     return RedirectToAction("Index"); 
    } 

enter image description here

答えて

1

、問題は、無効なモデルの場合の部分図を戻ってきているという事実であり、これは、AJAX呼び出しではありません。私はオプションのカップルをお勧めします、私は彼らが助けることを願っています。

まず、部分的なビューではなく、その場合の全体のビューを返すことができます。それはおそらく本当に洗練された解決策ではないでしょう。

もう1つの方法 - クライアント側の検証を使用するため、入力を検証するためにサーバー呼び出しを行う必要はありません。その場合、おそらくjQueryの検証プラグインを使用する必要があります。

関連する問題