加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 使用viewModels通过MVC中的User ID在MVC中使用IE

发布时间:2020-12-16 09:41:32 所属栏目:asp.Net 来源:网络整理
导读:我在MVC中创建一个应用程序,我在其中显示表中的行列表.我最初让它显示所有项目,但现在我想要做的是显示某些项目,其中用户的ID等于表中用户的ID. 我有这样的显示: 在我的控制器中: Public Function IssueHistory(sortOrderProject As String,command As Str
我在MVC中创建一个应用程序,我在其中显示表中的行列表.我最初让它显示所有项目,但现在我想要做的是显示某些项目,其中用户的ID等于表中用户的ID.

我有这样的显示:

在我的控制器中:

Public Function IssueHistory(sortOrderProject As String,command As String,issueTable As IssueTable) As ActionResult
    Dim issues As IQueryable(Of IssueTable) = dbServer.IssueTables
    Return View(issues)
End Function

我也按字母顺序排序,如下所示:

If sortOrderProject Is Nothing Then
     sortOrderProject = "AlphUp"
End If

Select Case sortOrderProject
    Case "AlphDown"
        ViewBag.AlphOrderIssue = "AlphUp"
        issues = issues.OrderByDescending(Function(i) i.IssueKey)
    Exit Select
    Case "AlphUp"
        ViewBag.AlphOrderIssue = "AlphDown"
        issues = issues.OrderBy(Function(i) i.IssueKey)
    Exit Select
    Case Else
        ViewBag.AlphOrderIssue = "AlphUp"
        issues = issues.OrderBy(Function(i) i.IssueKey)
    Exit Select
End Select

在我看来:

@ModelType IEnumerable(Of IssueTable)
@Html.DisplayFor(Function(modelItem) item.IssueStatus)
@Html.DisplayFor(Function(modelItem) item.IssueStatus)

但是如何使用viewModel过滤我的应用程序,以便为IssueTable中的每个用户ID.这是我到目前为止所得到的:

Public Function IssueHistory(sortOrderProject As String,issueTable As IssueTracker.ClientUserProjectIssue) As ActionResult
    Dim issues As IQueryable(Of IssueTracker.ClientUserProjectIssue) = dbServer.IssueTables
    'Dim issues As IEnumerable(Of IssueTracker.ClientUserProjectIssue) = dbServer.IssueTables
    Return View(issues)
End Function

在我看来:

@ModelType IEnumerable(Of IssueTracker.ClientUserProjectIssue)
@Html.DisplayFor(Function(modelItem) item.IssueTable.IssueStatus)
@Html.DisplayFor(Function(modelItem) item.IssueTable.IssueStatus)

我的ViewModel看起来像这样:

Public Class ClientUserProjectIssue
    Public Property uTable As UserTable
    Public Property IssueTable As IssueTable
End Class

我试图像这样实现它但是没有成功

视图模型:

Public Property iEnumarableIssue As IEnumerable(Of IssueTable)

控制器:

Dim ViewModel As IEnumerable(Of IssueTable) = dbServer.IssueTables
'ViewModel.iEnumarableIssue  = dbServer.IssueTable.Where(Function(x) x.UserID= id).ToList()

但是当我尝试这样做时,我得到了很多空值.使用viewModel过滤每个UserID的行的正确方法是什么,它等于IssueTable中的UserID?

我可以使用IQueryable或IEnumerable,如果这是正确的方法,并且代码可以在c#中解释.

解决方法

在构造查询时应该使用IQueryable.查询准备就绪后,调用ToList()枚举记录到内存中.然后,您可以将列表发送到视图.像这样:

public ActionResult IssueHistory(string sortOrderProject,int userId)
{
    var issues = dbServer.IssueTables.AsQueryable();
    //...
    issues = issues.Where(i => i.UserId == userId);
    //...
    issues = issues.OrderBy(i => i.IssueKey);
    //...
    return View(issues.ToList());
}

视图的模型必须是IEnumerable(Of IssueTable)(不是IQueryable)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读