Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.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# 需要有关IEnumerable的建议<;项目>-&燃气轮机;3xenumerable<;项目>;_C#_Asp.net Mvc_Linq - Fatal编程技术网

C# 需要有关IEnumerable的建议<;项目>-&燃气轮机;3xenumerable<;项目>;

C# 需要有关IEnumerable的建议<;项目>-&燃气轮机;3xenumerable<;项目>;,c#,asp.net-mvc,linq,C#,Asp.net Mvc,Linq,什么更好 1) 如果我在服务器上创建3个ViewBag,然后使用此ViewBag渲染视图 服务器 ViewBag.LeftColumnTales = tales.Where((x, i) => i % 3 == 0); ViewBag.CenterColumnTales = tales.Where((x, i) => i % 3 == 1); ViewBag.RightColumnTales = tales.Wh

什么更好

1) 如果我在服务器上创建3个ViewBag,然后使用此ViewBag渲染视图

服务器

            ViewBag.LeftColumnTales = tales.Where((x, i) => i % 3 == 0);
            ViewBag.CenterColumnTales = tales.Where((x, i) => i % 3 == 1);
            ViewBag.RightColumnTales = tales.Where((x, i) => i % 3 == 2);
ViewBag.Tales = tales;
查看

<div id="left_column">
    @foreach (var t in ViewBag.LeftColumnTales)
    {
        <div class="item">
            <a href="/narodnie-skazki/@t.PeopleTalesCategory.RouteNameAn/@t.RouteNameAn">@t.NameAn</a> <span>(@(new HtmlString(Html.TimeForReadingHtmlResult((int)t.TimeForReading))))</span>
            @(new HtmlString(Html.PeopleTaleVoterHtmlResult((int)t.Analit)))
        </div>
    }
    <!--end of div.item-->
</div>
        <div id="left_column">
            @foreach (var t in ((IEnumerable<MVCFairyTales3.Models.AuthorTale>)ViewBag.Tales).Where((x, i) => i % 3 == 0))
            {
                <div class="item">
                    <a href="/avtorskie-skazki/@t.AuthorTalesCategory.RouteNameAn/@t.RouteNameAn">@t.NameAn</a> <span>(@(new HtmlString(Html.TimeForReadingHtmlResult((int)t.TimeForReading))))</span>
                    @(new HtmlString(Html.AuthorTaleVoterHtmlResult((int)t.Analit)))
                </div>
            }    
            <!--end of div.item-->
        </div>
查看

<div id="left_column">
    @foreach (var t in ViewBag.LeftColumnTales)
    {
        <div class="item">
            <a href="/narodnie-skazki/@t.PeopleTalesCategory.RouteNameAn/@t.RouteNameAn">@t.NameAn</a> <span>(@(new HtmlString(Html.TimeForReadingHtmlResult((int)t.TimeForReading))))</span>
            @(new HtmlString(Html.PeopleTaleVoterHtmlResult((int)t.Analit)))
        </div>
    }
    <!--end of div.item-->
</div>
        <div id="left_column">
            @foreach (var t in ((IEnumerable<MVCFairyTales3.Models.AuthorTale>)ViewBag.Tales).Where((x, i) => i % 3 == 0))
            {
                <div class="item">
                    <a href="/avtorskie-skazki/@t.AuthorTalesCategory.RouteNameAn/@t.RouteNameAn">@t.NameAn</a> <span>(@(new HtmlString(Html.TimeForReadingHtmlResult((int)t.TimeForReading))))</span>
                    @(new HtmlString(Html.AuthorTaleVoterHtmlResult((int)t.Analit)))
                </div>
            }    
            <!--end of div.item-->
        </div>

@foreach(变量t在((IEnumerable)ViewBag.Tales中)。其中((x,i)=>i%3==0))
{
(@(新的HtmlString(Html.TimeForReadingHtmlResult((int)t.TimeForReading)))
@(新的HtmlString(Html.AuthorTaleVoterHtmlResult((int)t.Analit)))
}    

我不确定应用程序的结构/层次,但一般来说,我喜欢将业务/域逻辑与UI代码分开。听起来它是否应该位于左/中/右列完全是UI逻辑。在这种情况下,我会让我的业务层检索/创建所有故事的列表,然后让UI层对其进行拆分,不管它是如何显示的


当我试图确定某些逻辑是否属于UI层时,我想象我将创建许多UI(web、windows、手机、sharepoint web部件等),并问自己逻辑(例如,将其拆分为3列)是否可能在UI层之间发生变化。如果答案是肯定的,则该逻辑属于UI层。

我不确定应用程序的结构/层次,但通常我喜欢将业务/域逻辑与UI代码分开。听起来它是否应该位于左/中/右列完全是UI逻辑。在这种情况下,我会让我的业务层检索/创建所有故事的列表,然后让UI层对其进行拆分,不管它是如何显示的

当我试图确定某些逻辑是否属于UI层时,我想象我将创建许多UI(web、windows、手机、sharepoint web部件等),并问自己逻辑(例如,将其拆分为3列)是否可能在UI层之间发生变化。如果答案是肯定的,那么该逻辑属于UI层

什么更好

老实说,这两个我都不喜欢。他们都使用可视包和弱打字。很抱歉,但我个人在看到ViewBag/ViewData时会感到恶心

我个人喜欢使用视图模型和强类型视图:

public class MyViewModel
{
    public IEnumerable<Tale> LeftColumnTales { get; set; }
    public IEnumerable<Tale> CenterColumnTales { get; set; }
    public IEnumerable<Tale> RightColumnTales { get; set; }
}
在强类型视图中:

@model MyViewModel
<div id="left_column">
    @Html.DisplayFor(x => x.LeftColumnTales)
</div>
如果你必须在你的页面上重复这一点,更好的方法是使用子操作将其放入_布局中,如所述

什么更好

老实说,这两个我都不喜欢。他们都使用可视包和弱打字。很抱歉,但我个人在看到ViewBag/ViewData时会感到恶心

我个人喜欢使用视图模型和强类型视图:

public class MyViewModel
{
    public IEnumerable<Tale> LeftColumnTales { get; set; }
    public IEnumerable<Tale> CenterColumnTales { get; set; }
    public IEnumerable<Tale> RightColumnTales { get; set; }
}
在强类型视图中:

@model MyViewModel
<div id="left_column">
    @Html.DisplayFor(x => x.LeftColumnTales)
</div>

如果你必须在你的页面上重复这一点,更好的方法是使用子动作将其放在_布局中,如所述。

为什么要在第二种情况下强制转换?还有,以什么方式更好?在这之后我必须使用Bcz。其中((x,i)=>i%3==0)。它不适用于动态数据,如ViewBag。[属性]为什么在第二种情况下必须强制转换?还有,以什么方式更好?在这之后我必须使用Bcz。其中((x,i)=>i%3==0)。它不适用于动态数据,如ViewBag。[属性]