Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.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# MVC 5局部视图-模型混淆_C#_Asp.net Mvc_Partial Views - Fatal编程技术网

C# MVC 5局部视图-模型混淆

C# MVC 5局部视图-模型混淆,c#,asp.net-mvc,partial-views,C#,Asp.net Mvc,Partial Views,我有一个叫Slider的模型 using System; using NHibernate.Mapping.ByCode; using NHibernate.Mapping.ByCode.Conformist; namespace BarMotors.Models { public class Slider { public virtual int Id { get; set; } public virtual string Photo{ get; set; } pub

我有一个叫Slider的模型

using System;
using NHibernate.Mapping.ByCode;
using NHibernate.Mapping.ByCode.Conformist;

namespace BarMotors.Models
{
public class Slider
{
    public virtual int Id { get; set; }
    public virtual string Photo{ get; set; }
    public virtual string LeftText{ get; set; }
    public virtual string RightText { get; set; }
    public virtual int SortOrder{ get; set; }
    public virtual DateTime CreatedAt { get; set; }
    public virtual DateTime? UpdatedAt { get; set; }
    public virtual DateTime? DeletedAt { get; set; }

    public virtual bool IsDeleted
    {
        get { return DeletedAt != null; }
    }
}

public class SliderMap : ClassMapping<Slider>
{
    public SliderMap()
    {
        Table("Sliders");
        Id(x => x.Id, x => x.Generator(Generators.Identity));
        Property(x => x.Photo, x => x.NotNullable(true));
        Property(x => x.LeftText);
        Property(x => x.RightText);
        Property(x => x.SortOrder, x => x.NotNullable(true));
    }
}
}
在SliderController中,我无法将var模型传递给局部视图,因为我得到的是Iqueryable、ienumerable或沿以下行的错误

模型列表。滑块不可分配给类型模型。滑块

非常感谢
Simon

如果滑块与父模型无关,则可能需要使用子动作

您的控制器将执行如下操作:

public class MyController : Controller
{
    /* ... your code ... */

    [ChildActionOnly]
    public ActionResult Sliders()
    {
        var model = new Models.Slider();

        /* ... populate model ... */

        return PartialView("your-view-name", model);
    }
}
您可以使用HtmlHelper.Action方法从父视图中请求子操作:

<div>
    <!-- more view markup ... -->

    @Html.Action("sliders", "my")

</div>

以这种方式调用Html.Action方法时,生成的视图(通常是局部视图)将在当前视图中就地呈现。如果您熟悉PHP,它有点类似于include语句。

您正试图将列表分配给模型,但您声明了一个非列表类型的模型,因此您要么希望将其声明为列表类型,要么从结果中选择firstordefault

public class MyController : Controller
{
    /* ... your code ... */

    [ChildActionOnly]
    public ActionResult Sliders()
    {
        var model = new Models.Slider();

        model = Database.Session.Query<Slider>().Where(s => s.DeletedAt == null).OrderBy(x=>x.SortOrder).ToList().FirstOrDefault();

        return PartialView("your-view-name", model);
    }
}
否则

public class MyController : Controller
{
    /* ... your code ... */

    [ChildActionOnly]
    public ActionResult Sliders()
    {
        var model = new List<Models.Slider>();

        model = Database.Session.Query<Slider>().Where(s => s.DeletedAt == null).OrderBy(x=>x.SortOrder).ToList();

        return PartialView("your-view-name", model);
    }
}
在局部视图中,您必须将其更改为

@model List<BarMotors.Models.Slider>

@{
    Layout = null;
}

所以,没有viewmodel,但是我的模型应该是某种模型吗?没有。像那样调用Html.Action最多需要一些参数。它不像Html.Partial,它使用模型。所以我只是想知道我的-它指的是什么?谢谢Simony你要采取行动了。第一个参数是动作,第二个是控制器。示例代码使用MyController,所以第二个参数是my.Ahhh,我不知道它是否是cpoy和粘贴输入错误或其他什么。谢谢你的澄清。返回PartialView_HomeSlider,model;他仍然在告诉我;列表不可分配给类型Models.slider当您在视图中使用相同的列表时。你能把你的部分视图全部代码添加到我原来的帖子里吗。我想我只遗漏了一件小事——我只是不知道我错在哪里。更新了答案,请检查我!我忘了将我的新映射添加到我的nHibernate.Configure方法!!!哈哈
public class MyController : Controller
{
    /* ... your code ... */

    [ChildActionOnly]
    public ActionResult Sliders()
    {
        var model = new Models.Slider();

        model = Database.Session.Query<Slider>().Where(s => s.DeletedAt == null).OrderBy(x=>x.SortOrder).ToList().FirstOrDefault();

        return PartialView("your-view-name", model);
    }
}
public class MyController : Controller
{
    /* ... your code ... */

    [ChildActionOnly]
    public ActionResult Sliders()
    {
        var model = new List<Models.Slider>();

        model = Database.Session.Query<Slider>().Where(s => s.DeletedAt == null).OrderBy(x=>x.SortOrder).ToList();

        return PartialView("your-view-name", model);
    }
}
@model List<BarMotors.Models.Slider>

@{
    Layout = null;
}