2012-06-05 2 views
0

방금 ​​ASP.NET MVC3을 배우기 시작했습니다.ASP.NET MVC3은 Ajax 링크를 통해 기본보기와 검색보기간에 데이터를 전달합니다.

다음과 같은 경우가 있습니다. 특정 모델에 대한 작성보기에서 사용자는 링크 (Html.ActionLink 도우미로 렌더링 됨)를 클릭하여 코드/설명을 조회 할 수 있습니다. 조회 값은 데이터베이스의 조회 테이블에서 검색되고 별도의보기에 표시됩니다. 두보기는 두 개의 다른 컨트롤러에 의해 처리됩니다. 사용자가 후자보기에서 조회 값을 선택하면 해당 값 (코드 + 설명)을 작성보기로 다시 복사해야합니다.

두보기간에 데이터를 전달하는 방법은 무엇입니까? HTTP 요청의 상태없는 특성으로 인해 이것이 가능하지 않습니까?

Ajax 링크를 사용해 보았지만 제대로 작동하지 않았습니다.

코드보기를 만듭니다

<fieldset> 
    <legend>Z-Info</legend> 

    <div class="editor-label"> 
     @Html.LabelFor(model => model.ZZL_U_CODE) 
    </div> 
    <div class="editor-field"> 
     @Html.EditorFor(model => model.ZZL_U_CODE) 
     @Html.ValidationMessageFor(model => model.ZZL_U_CODE) 
    </div> 

    <div class="editor-label"> 
     @Ajax.ActionLink("Land code test", "Index", "Domein", new {name = "lan" }, 
      new AjaxOptions { 
       HttpMethod = "Get", 
       Url = Url.Action("Index", "Domein", new {name = "lan" }), 
       OnBegin = "OnBegin", 
       OnSuccess = "InsertCodeNaam", 
       OnFailure = "OnFailure", 
       OnComplete = "OnComplete" 
      }) 
    </div> 

사용자가 다시 Json 데이터를 반환 다음 Select 조치가 호출되는 코드/설명을 선택합니다.

방법 선택 :

public class DomeinController : Controller 
{ 
    private ZZLEntities db = new ZZLEntities(); 

    // 
    // GET: /Domein/ 

    public ViewResult Index(string name) 
    { 
     DomeinViewModel model = DomeinRepositry.GetAll(name); 
     return View(model); 
    } 



    GET: /Domein/Select/5 

    public JsonResult Select(int id, string naam) 
    { 
     return Json(new DomCodeNaam { codeValue = id, naamValue = naam }, JsonRequestBehavior.AllowGet); 
    } 

은 다른 솔루션 수 있습니까? 부분보기가 옵션 일 수 있습니까?

답변

0

그럼 당신은 두 가지 옵션이 있습니다

  1. 그냥 조회 값을 다시 게시하고 내부적으로 첫 번째 ("생성")보기로 리디렉션하지만,이 시간 (내부적으로) 통과 는 사용자가 선택한 값을 너무 선택한 값으로 뷰를 렌더링 할 수 있습니다. 어쩌면 은 훌륭하지만 구현하기가 쉽지 않습니다. 당신이 그것을 게시하거나 2 단계 과정을 거치지 않는 한 사용자가 이미 첫 번째 양식에 입력 한 데이터가 손실됩니다.
  2. Ajax를 사용하려는 경우 사용자 동작 (즉, 선택한 조회 값)에 따라 클라이언트 측의 첫 번째 '만들기'보기에서 양식의 해당 부분을 업데이트해야합니다.

나는 정확히 "별도의 뷰"

+0

안녕 MARIUSZ, 응답에 대한 감사가 무엇을 의미하는지에 그러나 조금 혼란 스러워요. 나는 "분리 된"견해로 내가 무엇을 의미하는지 명확히하고 싶다. 다른 웹 페이지로보기. 물론 MVC는 웹 페이지를 다루지 않습니다. 보기를 만들기 위해 조회 값을 '다시 게시'하라는 제안. ASP.NET MVC가 다시 게시 메커니즘을 지원하지 않는다는 것을 어떻게 알았습니까? 어쩌면 나는 조회 데이터를 TempData (짧은 수명의 세션 데이터)에 넣을 수 있으며 RedirecToAction을 작성보기의 컨트롤러에서 작성 작업으로 수행 할 수 있습니다. 문제는 뷰의 전환 사이에 "viewstate"를 유지하는 방법입니다. – sliem

+0

@sliem 1. 나는 하나의보기에서 다른보기로 사용자를 이동하는 것에 대해 생각하고 있었다. 즉,보기 동작에 링크가있는보기 만들기 - 동작을 만들기 위해 리디렉션되는 모양의 조회보기 -> 선택한보기와 함께보기 만들기 -> 최종 양식 제출. 따라서 언제든지 한 페이지 만 사용자에게 표시됩니다. 조회 값은 선택적 매개 변수 인 ActionResult Create (다른 매개 변수, Lookup values ​​= null)를 사용하여 내부적으로 액션간에 전달되거나 Model.LookupValue = "blah blah"로 리디렉션하기 전에 그에 따라 모델을보고 설정 한 다음 Create (모델)로 리디렉션 할 수 있습니다. 항상 Session 개체를 사용할 수 있습니다. –

+0

@ 2 또는 JS/jQuery를 사용하면 더 나은 옵션이 될 수 있습니다. 예 : BlockUI [link] (http : //jquery.malsup.com/block/# demos)를 사용하여 조회 양식을 표시하고 사용자가 값을 사용하여 값 수정 양식을 선택합니다. –

관련 문제