Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.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
C# Asp.NETMVC Razor视图服务器端的动态div显示顺序_C#_Asp.net Mvc_Razor - Fatal编程技术网

C# Asp.NETMVC Razor视图服务器端的动态div显示顺序

C# Asp.NETMVC Razor视图服务器端的动态div显示顺序,c#,asp.net-mvc,razor,C#,Asp.net Mvc,Razor,在服务器端呈现视图页面时,是否可以更改div的显示顺序?每个div都有不同的c#和html内容,因此不可能通过循环生成它们 一个选项是,当jQuery打开页面时,按原样显示并在客户端重新排序。但是重新排列div有一些延迟时间 另一个选项是为每个div生成视图页面,然后循环div id,使用@Html.Action或@Html.RenderPartial呈现内容。当项目>20且页面>100时不可行 任何服务器端的解决方案都将不胜感激 Foo.cshtml页面: <div class="con

在服务器端呈现视图页面时,是否可以更改div的显示顺序?每个div都有不同的c#和html内容,因此不可能通过循环生成它们

一个选项是,当jQuery打开页面时,按原样显示并在客户端重新排序。但是重新排列div有一些延迟时间

另一个选项是为每个div生成视图页面,然后循环div id,使用
@Html.Action
@Html.RenderPartial
呈现内容。当项目>20且页面>100时不可行

任何服务器端的解决方案都将不胜感激

Foo.cshtml页面:

<div class="container">
    <div id="a">
       //some c# codes to render html
    </div>
    <div id="b"> 
     //some other c# codes to render html
    </div>
    <div id="c"> 
     //some another c# codes to render html
    </div>
</div>

对于cshtml中的服务器端重新排序,请将ViewOrder拆分为字符串数组并迭代:

foreach(var div in ViewOrder.Split(",".ToCharArray()) {
    switch (div) {
        case "a":
            <div id="a">
            //some c# codes to render html
            </div>
            break;
        case "b":
            <div id="b">
            //some c# codes to render html
            </div>
            break;
        ... etc ...
}}
foreach(ViewOrder.Split(“,”.ToCharArray()中的var div){
开关(div){
案例“a”:
//一些用于呈现html的c#代码
打破
案例“b”:
//一些用于呈现html的c#代码
打破
等
}}

请注意,还有一个使用FlexBox和CSS
order:
属性的CSS解决方案,如中所示。

对于cshtml中的服务器端重新排序,请将ViewOrder拆分为字符串数组并对其进行迭代:

foreach(var div in ViewOrder.Split(",".ToCharArray()) {
    switch (div) {
        case "a":
            <div id="a">
            //some c# codes to render html
            </div>
            break;
        case "b":
            <div id="b">
            //some c# codes to render html
            </div>
            break;
        ... etc ...
}}
foreach(ViewOrder.Split(“,”.ToCharArray()中的var div){
开关(div){
案例“a”:
//一些用于呈现html的c#代码
打破
案例“b”:
//一些用于呈现html的c#代码
打破
等
}}

注意到还有一个使用FRISBOX和CSS <代码>顺序:属性的CSS解决方案,如

> P >如果你不想创建部分(我仍然认为可行的话,因为你的页面中有标记),你可以循环你的搜索谓词,并使用<代码>开关< /C>来渲染你的部分:

您的控制器将向您的模型添加订单:

//Model
class MyModel {
    //...
    public string[] DivOrder { get; set; };
    //...
}

//Controller Action
MyModel model = new MyModel();
//...
model.DivOrder = new { "c", "b", "a" };
//...
您的视图将根据以下顺序重新排列输出:

<div class="container">
    @foreach(string key in Model.DivOrder) {
        switch (key) {
            case "a":
                <div id="a">
                    //some c# codes to render html
                </div>
                break;
            case "b":
                <div id="b">
                    //some other c# codes to render html
                </div>
                break;
            case "c":
                <div id="c">
                    //some another c# codes to render html
                </div>
                break;
        }
    }
</div>

@foreach(Model.DivOrder中的字符串键){
开关(钥匙){
案例“a”:
//一些用于呈现html的c#代码
打破
案例“b”:
//用于呈现html的其他一些c#代码
打破
案例“c”:
//还有一些c#代码用于呈现html
打破
}
}

< /代码> 如果您不想创建泛型(我仍然认为可行的话,因为您的页面中有标记),则可以循环搜索谓词,并使用<代码>开关< /代码>来呈现您的部分:

您的控制器将向您的模型添加订单:

//Model
class MyModel {
    //...
    public string[] DivOrder { get; set; };
    //...
}

//Controller Action
MyModel model = new MyModel();
//...
model.DivOrder = new { "c", "b", "a" };
//...
您的视图将根据以下顺序重新排列输出:

<div class="container">
    @foreach(string key in Model.DivOrder) {
        switch (key) {
            case "a":
                <div id="a">
                    //some c# codes to render html
                </div>
                break;
            case "b":
                <div id="b">
                    //some other c# codes to render html
                </div>
                break;
            case "c":
                <div id="c">
                    //some another c# codes to render html
                </div>
                break;
        }
    }
</div>

@foreach(Model.DivOrder中的字符串键){
开关(钥匙){
案例“a”:
//一些用于呈现html的c#代码
打破
案例“b”:
//用于呈现html的其他一些c#代码
打破
案例“c”:
//还有一些c#代码用于呈现html
打破
}
}