Как передать параметр из js в прямое событие Url Action? - PullRequest
2 голосов
/ 05 июля 2019

Есть ли способ получить параметр objectId из js и отправить его в качестве параметра в действие 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"));
    }
)

Ответы [ 2 ]

0 голосов
/ 16 июля 2019

Просто добавьте необработанный код в качестве строки значения и добавьте ParameterMode.Raw к экземпляру Parameter, например:

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

(на основе Примеры Explorer - Layouts> CardLayout )

Или, альтернативно, пользовательский объект:

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

(на основе Примеры Explorer - Модели> Аннотации данных )

0 голосов
/ 11 июля 2019

Я пришел с другим решением, когда увидел откомпилированный код в отладчике.Вы можете создать прямое событие как это:

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