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" }) 

이 작품을 사용합니다. 문제 : Create 페이지를 제출하면이 페이지가 컨트롤러로 전송되고 모델이 유효하지 않은 데이터를 채우는 경우 레이아웃 및 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 유효성 플러그인을 사용해야 할 것입니다.

관련 문제