2011-03-27 5 views
0

나는 항목이 스캔 될 때마다 클릭되는 cshtml보기. 버튼에 단추가 있습니다. 사용자는 한 번에 하나씩 모든 항목을 스캔해야합니다 .i opem/새 창에 팝업을 추가하고 다른 페이지로 리디렉션하려는 경우 .. 마지막 항목인지 여부는 조건입니다. 컨트롤러 메소드에서 체크됩니다.
컨트롤러에서 새 창을 여는 자바 스크립트를 어떻게 호출 할 수 있습니까? 내 'redirecttoaction'바로 전에?mvc3 컨트롤러에서 javascript 메서드를 호출 하시겠습니까?

더 좋은 방법은 없나요?

답변

0

JavaScript가 컨트롤러에서 호출되지 않습니다. 대신 마지막 항목이 클라이언트 쪽인지 확인하는 논리를 이동하고 적절하게 적절한 컨트롤러 조치를 호출하십시오.

public ActionResult Index() 
{ 
    var model = new MyViewModel(); 
    return View(model); 
} 

[HttpPost] 
public ActionResult Index(MyViewModel model) 
{ 
    // TODO Process the scanned code model.Code 

    if (IsLastItem()) 
    { 
     model.IsLast = true; 
    } 
    return View(model); 
} 

을하고 뷰 내부 :

+0

mahesh..this는 자바 스크립트 창이 될 것입니다. 에 관계없이 결정이 어디에서 만들어지고 .. 컨트롤러 조치는 자바 스크립트 window.open을 호출해야합니다 – hillary

+0

그럼 마지막 요소가 있는지 논리를 확인한 후 리디렉션 동작으로 대상 창이 열리지 않는 이유는 무엇입니까? –

+0

페이지 A의 결정에 따라 두 가지 조치가 필요합니다. 1.이 팝업을 엽니 다. 2. 페이지 B 또는 C로 리디렉션합니다.이 팝업 자바 스크립트를 다음 페이지의 document.ready에 넣을 것을 고려했습니다. 하지만 때로는 후속 페이지가 B .. 때로는 C에서 B .. 때로는 C에 직접 ... 그래서 .. 그게 해결책이 아니야 – hillary

2

다음은 샘플 패턴의

@model MyViewModel 
@using (Html.BeginForm()) 
{ 
    @Html.TextBoxFor(x => x.Code) 
    <input type="submit" value="OK" /> 
} 

<script type="text/javascript"> 
@if (Model.IsLast) 
{ 
    <text> 
    window.open('@Url.Action("foo")', 'foo'); 
    window.location.href = '@Url.Action("bar")'; 
    </text> 
} 
</script> 
+0

대린은 .. 이것은 .. 지금 어떻게 [HttpPost] 공공 ActionResult 지수 (MyViewModel 모델) { // TODO 프로세스 스캔 코드 model.Code 경우 (IsLastItem()) { 모델 .IsLast = true; return redirecttoaction ("다른 페이지"); } 돌아 가기보기 (모델); 보시다시피 } , 그것은 ... 그래서 basically..i 팝업 플러스 재 지정을 원하는 .. 다른 페이지로 리디렉션됩니다 다시 view..but에 을 게시 그래서 내가 무엇을 시도하고있다 나던 .. redirecttoaction 바로 전에 팝업을 호출하십시오. – hillary

관련 문제