如何将参数从 js 传递到直接事件 Url 操作?

How can I pass parameter from js to direct events Url Action?

有没有办法从 js 获取 objectId 参数并将其作为参数发送给 Url 操作?

JS:

function ButtonClick(objectId) {
    App.testID.fireEvent("click", objectId);
}

Ext.net:

Html.X().ID("testID").DirectEvents
(
    de =>
    {
        de.Click.Url = Url.Action("TestMethod", "TestController");
        de.Click.ExtraParams.Add(new Parameter("objectId", "I need objectId here"));
    }
)

当我在调试器中看到编译后的代码时,我想到了不同的解决方案。 您可以像这样创建直接事件:

Html.X().ID("testID")
.Listeners
(
    l =>
    {
        l.AfterRender.Handler = @"App.testID.on('testEvent', function(id) {
                                                                             Ext.net.directRequest({
                                                                                url: '/TestController/TestMethod',
                                                                                extraParams:
                                                                                {
                                                                                    'objectId': id
                                                                                }
                                                                            });
                                                                        });";
    }
)

并用以下方式触发它:

function ButtonClick(objectId) {
    App.testID.fireEvent("testEvent", objectId);
}

只需将原始代码添加为值字符串并将 ParameterMode.Raw 添加到 Parameter 实例,如下所示:

de.Click.ExtraParams.Add(new Parameter("objectId", "App.MyComponent.Id", ParameterMode.Raw));

(基于Examples Explorer - Layouts > CardLayout

或者自定义对象:

de.Click.ExtraParams.Add(new
{
    myTargetId = JRawValue.From("this.up('button').id")
});

(基于Examples Explorer - Models > Data Annotations