您可以在调用window.Open时传递WebGrid项

时间:2015-07-06 17:34:59

标签: javascript asp.net asp.net-mvc razor

我的一个WebGrid列中有一个按钮。如果单击该按钮,我将使用以下代码弹出一个窗口:

window.open('/Home/Message', '_blank', 'toolbar=yes, scrollbar=yes, resizable=yes, top=500, left=500, width=400, height=400');

“消息”是我创建的另一个填充弹出窗口的视图。我需要能够将行对象传递到该窗口以进行特定按钮按下。我认为有办法做到这一点。

这是我的消息ActionResult:

public ActionResult Message()
    {
        var model = new MessageViewModel();
        return View(model);
    }

但我真的想在行对象的方法上有一个参数。

编辑:更多细节。

所以我的webgrid列中有一个按钮,如下所示:

grid.Column(header: "Fault", format: (item) =>
            {
                if (item.Fault != null)
                {
                    return new HtmlString("<input type='submit' id='btnShowFault' value='Fault' />");
                }

                return "";
            }))

这是点击它时调用的javascript:

 $(function () {
    $("#btnShowFault").click(function (e) {
        e.preventDefault();

        window.open('/Home/Message', '_blank', 'toolbar=yes, scrollbar=yes, resizable=yes, menubar=no, top=200, left=500, width=400, height=250');
    });
});

所以我猜我真正需要的是两倍。

  1. 如何将网格中的行项目添加到该函数中。
  2. 如何将其传递给window.open调用。
  3. 我认为这是可能的,因为在wpf和silverlight这样的事情中这很容易做到。

2 个答案:

答案 0 :(得分:0)

尝试使用此

describe("Testing MajorObjectsCtrl", function () { //checking dataFactory.get called only once it("should call dataFactory.get and called only once", function () { scope.currentAppId = mockApplicationId; scope.applications = applicationsMockData; scope.itemsPerPage = 10; $controller('AppSettingCtrl', { $scope: scope, dataFactory: mainmockdataFactory }); expect(mockdataFactory.get.calls.count()).toBe(0); scope.currentAppId = mockApplicationId; scope.majorObjects.slice(); scope.loadMajorObjects(); scope.$digest(); expect(mockdataFactory.get).toHaveBeenCalled(); expect(mockdataFactory.get.calls.count()).toBe(1); }); window.open('/Home/Message?field1=value1&field2=value2...', '_blank', 'toolbar=yes, scrollbar=yes, resizable=yes, top=500, left=500, width=400,

其中
height=400');
class MessageViewModel()
 {
public string fireld1{get; set;}
public string fireld2{get; set;}
...............................

答案 1 :(得分:0)

我最后放弃了window.open而是做了一个对话。除了文本之外,还有其他任何事情都很困难。