【问题标题】:Razor. How to use partial view with IQueryable?剃刀。如何在 IQueryable 中使用部分视图?
【发布时间】:2014-11-04 13:41:11
【问题描述】:

我对 Razor 引擎完全陌生,所以我的问题可能看起来很傻。反正。我需要在主视图中使用局部视图,并且我正在传递继承 IQueryable 接口的模型。 看起来像这样:

 @{Html.RenderPartial("~/Views/comments/Details.cshtml", new IQueryable<BlogAspNetMVC.Models.comments>);}

局部视图模型:

@model IQueryable<BlogAspNetMVC.Models.comments>

我应该如何更改 RenderPartial 才能接受此模型作为参数?

附: 这是 cmets 模型:

  public partial class comments
    {
        public int ID { get; set; }
        public string Comment { get; set; }
        public Nullable<int> Author { get; set; }
        public Nullable<System.DateTime> Posted { get; set; }
        public Nullable<int> PostID { get; set; }

        public virtual blog_post blog_post { get; set; }
    }

这里是 Icmets 界面:

public interface IComments : IDisposable
{
    IQueryable<comments> GetPostComments(int postid);
    //void Add(comments comment);
    //void Update(comments comment);
    //void Remove(int id);
}

这是如何在存储库中实现的:

public IQueryable<comments> GetPostComments(int postid)
        {
            var all = from a in db.comments
                      orderby a.Posted descending
                      where a.PostID == postid
                      select a;
            return all.AsQueryable();
        }

【问题讨论】:

  • BlogAspNetMVC.Models.comments的类型是什么?
  • 我还应该补充一点,一个已经是复数的项目有一个IQueryable 是不寻常的。这类似于拥有一组集合,在这种情况下可能没有意义。
  • 似乎没有 IQueryable 我不能使用 foreach 语句,因为它不支持 GetEnumerator()。
  • 调用 RenderPartial 的视图的模型是什么?

标签: c# asp.net-mvc asp.net-mvc-4 razor


【解决方案1】:

根据您发布的内容,这应该传递正确的类型:

@Html.RenderPartial("~/Views/comments/Details.cshtml", 
                  new List<BlogAspNetMVC.Models.comments>().AsQueryable());

虽然,您只是传递了一个空集合。我怀疑您从父视图中丢失了模型中的一些数据,您应该真正传递给 RenderPartial。

【讨论】:

  • 不包含 AsQueryable() 的定义
  • 那么comments 不是IEnumerable。我怀疑你真的不想看到IQueryable
【解决方案2】:

这是我尝试过的,它对我有用。

Controller 应该将 IQueriable 对象传递给视图

IQueryable<comments> commentsList = commentsRepository.GetPostComments(1);
        return View(commentsList);

在父视图(渲染局部视图)中应该使用@model 指令,

@model IQueryable<WebApplication1.Models.comments>

我将部分视图中的@model 指令修改为,

@model IQueryable<WebApplication1.Models.comments>

尝试一次,它应该可以工作。

【讨论】:

    猜你喜欢
    • 2018-04-24
    • 2011-10-10
    • 1970-01-01
    • 2012-04-13
    • 2014-02-02
    • 2012-03-28
    • 2020-01-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多