2017-02-18 4 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> 

и вызова страницы 'New Hotel', я использую

@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

На мой взгляд, проблема заключается в том факте, что вы возвращающей частичный вид в случае недопустимого модели, и это не Аякса вызов , Я могу предложить пару вариантов, надеюсь, они могут помочь.

Во-первых, вы можете вернуть не частичный вид, а весь вид в этом случае. Это, вероятно, не очень элегантное решение, и это может привести к дублированию представлений.

Другой способ - использовать проверку на стороне клиента, поэтому вам не нужно делать вызов сервера, чтобы просто подтвердить свой ввод. В этом случае вам, вероятно, понадобится использовать плагин проверки jQuery.