从mvc3控制器调用javascript方法?

问题描述:

我在cshtml视图中有一个按钮。每次扫描一个项目时都会点击它。 用户必须做到一个一个,一旦所有的项目已被扫描..我想要操作/弹出一个新的窗口加上重定向他到另一个页面..条件无论是最后一项..是在控制器方法中检查。
我怎样才能调用JavaScript来从控制器打开新窗口..在我的'redirecttoaction'之前?从mvc3控制器调用javascript方法?

有没有更好的方法来做到这一点?

它不干净,从控制器调用JavaScript。相反,将检查其最后一项的检查逻辑移到客户端并根据需要调用适当的控制器操作。

+0

mahesh..this将是一个JavaScript窗口。无论决定是在哪里进行的。控制器操作必须调用javascript window.open – hillary 2011-03-27 04:53:49

+0

然后,为什么不检查该目标是否为重定向操作,然后检查其最后一个元素的逻辑? – 2011-03-27 04:59:14

+0

有两个动作需要基于page-A的决定。1.打开这个弹出窗口2.重定向到页面B或C.我考虑把这个弹出式javascript放在后续页面的document.ready中。但有时后面的页面是B..有时C通过B ..有时直接到C.所以..这不是一个解决方案 – hillary 2011-03-27 05:05:00

这里的一个样品图案:

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

和视图内:

@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(“another page”); } return View(model); } 正如你看到的,它不回发到view..but被重定向到另一个页面.. 所以basically..i想弹出加重定向.. 所以我试图为在重定向之前调用弹出窗口。 – hillary 2011-03-27 13:08:12