Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core 将字符串数组从控制器发送到ASP.NET核心服务器端呈现JavaScript_Asp.net Core_Server Side Rendering_Serverside Javascript_Prerender_Visual Studio Templates - Fatal编程技术网

Asp.net core 将字符串数组从控制器发送到ASP.NET核心服务器端呈现JavaScript

Asp.net core 将字符串数组从控制器发送到ASP.NET核心服务器端呈现JavaScript,asp.net-core,server-side-rendering,serverside-javascript,prerender,visual-studio-templates,Asp.net Core,Server Side Rendering,Serverside Javascript,Prerender,Visual Studio Templates,以下是我试图实现的目标-我想将一个字符串数组从我的ASP.NET控制器发送到JavaScript(从TypeScript编译),该JavaScript在服务器端(作为预渲染)和客户端(作为初始状态)运行。我正在使用VisualStudio中的React Redux模板 我的控制器方法: public IActionResult Index() { ViewData["Services"] = new string[] { "ServiceA", "ServiceB

以下是我试图实现的目标-我想将一个字符串数组从我的ASP.NET控制器发送到JavaScript(从TypeScript编译),该JavaScript在服务器端(作为预渲染)和客户端(作为初始状态)运行。我正在使用VisualStudio中的React Redux模板

我的控制器方法:

    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>
}
@{
ViewData[“Title”]=“主页”;
动态数据=新数据
{
services=ViewData[“services”]作为字符串[]
};
}
加载。。。
@节脚本{
}
我的启动服务器文件部分:

return new Promise<RenderResult>((resolve, reject) => {
        actionCreators.addServices(params.data.services);
.......
返回新承诺((解决、拒绝)=>{
actionCreators.addServices(params.data.services);
.......
我上面的actionCrators对象是

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

        dispatch({ type: 'ADD_SERVICES', services: services });
    }
};
export const actionCreators={
addServices:(services:string[]):AppThunkAction=>(dispatch,getState)=>{
分派({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;
};
const unloadedState:ServicesState={services:[]};
导出常量减速机:减速机=(状态:ServicesState,incomingAction:Action)=>{
常量动作=作为已知动作输入动作;
开关(动作类型){
案例“添加服务”:
返回{
服务:action.services
};
违约:
//下一行保证KnownAction union中的每一项操作都包含在上述案例中
const defactvecheck=动作;
}
//对于无法识别的操作(或在操作无效的情况下),必须返回现有状态
//(如果未提供,则为默认初始状态)
返回状态| |未加载状态;
};
如果我在
unloadedState
数组中设置了一些值,则initialState中的服务数组将在服务器端填充,并且我可以在页面的视图源中看到它们。因此,我的通量循环逻辑很好。我怀疑问题是通过ViewData将字符串数组从控制器传递到
asp预渲染数据


请提供帮助。

为什么不直接使用模型并将其传递给视图?因为传递的内容不多,我只想传递字符串数组,而模型就太复杂了。我觉得看看这个,然后看看你传递给帮助者的内容。我的建议是:首先手动尝试,如示例所示,以证明它是有效的,然后就应该我将告诉您应该如何将其传递给属性。