Отправить массив строк из контроллера на серверную часть ASP.NET Core, отображающую JavaScript - PullRequest
0 голосов
/ 26 июня 2018

Вот что я пытаюсь достичь - я хочу отправить массив строк из моего контроллера ASP.NET в JavaScript (скомпилированный из TypeScript), который запускается как на стороне сервера (как предварительный рендеринг), так и на стороне клиента (как начальный) государство). Я использую шаблон React-Redux из Visual Studio.

Метод моего контроллера:

    public IActionResult Index()
    {
        ViewData["Services"] = new string[] { "ServiceA", "ServiceB" };
        return View();
    }

Мой cshtml просмотр файла:

@{
    ViewData["Title"] = "Home Page";

    dynamic data = new
    {
        services = ViewData["Services"] as string[]
    };
}

<div id="react-app" asp-prerender-module="ClientApp/dist/main-server" asp-prerender-data=data>Loading...</div>

@section scripts {
    <script src="~/dist/main-client.js" asp-append-version="true"></script>
}

Часть файла моего загрузочного сервера:

return new Promise<RenderResult>((resolve, reject) => {
        actionCreators.addServices(params.data.services);
.......

Мой объект actionCrators выше

export const actionCreators = {
    addServices: (services: string[]): AppThunkAction<KnownAction> => (dispatch, getState) => {

        dispatch({ type: 'ADD_SERVICES', services: services });
    }
};

, который сопоставлен с этим редуктором:

const unloadedState: ServicesState = { services: [] };

export const reducer: Reducer<ServicesState> = (state: ServicesState, incomingAction: Action) => {
    const action = incomingAction as KnownAction;

    switch (action.type) {
        case 'ADD_SERVICES':
            return {
                services: action.services
            };
        default:
            // The following line guarantees that every action in the KnownAction union has been covered by a case above
            const exhaustiveCheck = action;
    }

    // For unrecognized actions (or in cases where actions have no effect), must return the existing state
    //  (or default initial state if none was supplied)
    return state || unloadedState;
};

Если я установлю некоторые значения в массиве unloadedState, массив services в initialState заполняется на стороне сервера, и я могу видеть их в источниках моей страницы. Так что моя логика цикла потока в порядке. Я подозреваю, что проблема заключается в передаче массива строк из контроллера в asp-prerender-data через ViewData.

Пожалуйста, помогите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...