2012-04-27 6 views
1

컨트롤러 "계약"및 그리드가 포함 된 "전체", "포커스", 편집을위한 "편집"및 POST 메서드 하나 "편집"이 있습니다. 사용자는 단추를 사용하여 모든 표에서 편집에 액세스 할 수 있습니다. 하지만 POST가 실행 된 후 요청을 보내는 작업으로 리디렉션하고 싶습니다. 예를 들어 : (!)요청을 보내는 동작으로 리디렉션

  1. 공개 "초점"그리드
  2. 선택 행
  3. 클릭 편집
  4. 마지막에 "초점"그리드를 재 저장 변경을 클릭

또는

  1. 개방
  2. 선택 행
  3. 클릭 편집
  4. 마지막에 "모든"그리드를 재 저장을 변경 한 다음 "모든"그리드 (!)

답변

1
public ActionResul All() 
{ 
    var items=dbContext.Items; 
    return View("All",items); 
} 

에 대한

routes.MapRoute(
      "filters", 
      "All", 
      new { controller = "Contracts", action = "All" } 
     ); 

     routes.MapRoute(
      "filters1", 
      "focus", 
      new { controller = "Contracts", action = "focus" } 
     ); 

를 제출 OU이

public ActionResult Edit(int id, yourviewmodel viewmodel,string YourFilter) 
    { 

      return RedirectToAction(YourFilter); 
    } 

로 리디렉션 할 수 있으며 Global.asax에 당신은 편집이 같은 경로를 설정할 수 있습니다 All보기 데이터가있는 눈금이 표시됩니다. 그리드에서 레코드를 선택하고 편집을 클릭하면 편집에 대한 두 번째 작업 방법으로 이동합니다.

여기에서 편집 방법을 호출 할 때 몇 가지 플래그를 전달할 수 있습니다. 당신은 당신의 Focus 당신이

@Html.ActionLink("Edit","Edit","Item",new { @id=item.Id, @from="all"},null) 

같은 편집 링크를 빌드 할 때 그래서 내 편집이보기에, "all"

같은 방법으로 값을 가진 쿼리 문자열 키 "from을"있을 것이라는 점을 추가 할 수 있습니다 다른 값을 전달할 수 있습니다.

이제 Edit Action 메서드를 사용하여 매개 변수를 읽고 편집 뷰 모델의 속성 값으로 설정합니다. 이 속성을 ViewModel에 추가 할 수 있습니다.

public ActionResult Edit(int id,string from) 
{ 
    EditItemViewModel item=GetItem(id); 
    item.From=from;  
    return View(item); 
} 

이보기에는 편집 양식이 있습니다. 양식 게시물에이 값을 사용할 수 있도록 양식 요소 안에 From의 값을 유지합니다.

@model EditItemViewModel 

@using(Html.BeginForm()) 
{ 
    @Html.HiddenFor(m => m.Id); 
    @Html.TextBoxFor(m => m.ItemName) 
    @Html.TextBoxFor(m => m.ItemDesc) 
    @Html.HiddenFor(m => m.From) 
    <input type="submit" value="Update" /> 
} 

여기서 사용자가 다시 편집하고 제출할 수 있습니다. HttpPost Edit 액션 메소드에서이를 처리합니다. 보낸 사람 속성 값을 확인하고 저장 후 리디렉션 할 위치를 결정하십시오.

[HttpPost] 
public ActionResult Edit(EditItemViewModel model) 
{ 
    if(ModelState.IsValid) 
    { 
    //Save data 
    if(model.From=="all") 
     return RedirectToAction("All"); 
    else 
     return RedirectToAction("Focus"); 
    } 
    return View(model); 

} 
+0

감사합니다. 좋은 해결책입니다. – WISEMAN

0

전 귀하의 게시물 편집이 이와 같을 수 있다고 생각하십시오.

(편집/전체/1 또는 편집/포커스/2)를 갖는 그리드를 클릭 한 후 y 에서 편집을 클릭

 routes.MapRoute(
      "EditFilter", 
      "Edit/{YourFilter}/{id}", 
      new { controller = "Contract", action = "Edit",YourFilter = UrlParameter.Optional,id = UrlParameter.Optional } 
    ); 
관련 문제