我想在视图中的数据表中显示ID查找。为此,我执行以下操作:
创建将返回ID的函数:
public int getClientID(string login)
{
var context = new MyEntity(new Uri("host/MyWCF.svc/"));
var userID = from persons in context.PERSON
where persons.LOGIN == login
select persons.USER_ID;
int uID = userID.First();
var cli = from client in context.CLIENT
where client.USER_ID == uID
select client.CLIENT_ID;
int cliID = cli.First();
return cliID;
}
而且,在我看来:
客户:@ { ((HomeController中)(this.ViewContext.Controller))getClientID(User.Identity.Name)。 }
其中HomeController是我的控制器的名称,其中定义了函数。 但这样做,我有以下错误:
Can only specify query options (orderby, where, take, skip) after last navigation
在第int uID = userID.First();
行
那么,为什么我会出现这个错误(因为我在te视图中使用了良好的命名空间),这是一种很好的工作方式吗? 谢谢!
答案 0 :(得分:1)
@Html.Action("Home","getClientID", new {login=User.Identity.Name})
答案 1 :(得分:1)
你必须在你的查询中加入第一条记录,就像这样,
public int getClientID(string login)
{
var context = new MyEntity(new Uri("host/MyWCF.svc/"));
var userID = (from persons in context.PERSON
where persons.LOGIN == login
select persons.USER_ID).FirstOrDefault(); //Take First ID here inside query
//So you can use userID directly in second query.
//But you have to check for null as well.
var cli = (from client in context.CLIENT
where client.USER_ID == userID
select client.CLIENT_ID).FirstOrDefault();
//int cliID = cli.First();
return cli ;
}
要轻松调用View里面的Controller方法,你也可以这样做,
在Controller的Action中加载你的视图(通常是它的索引动作)
添加此行以在ViewBag中创建新的动态函数。 ViewBag.GetClientID = new Func(getClientId);
然后在控制器中添加方法
private int getClientId(string arg)
{
//Your stuff
}
您可以在View中调用此方法,如下所示
@ViewBag.GetClientID("Your Input string")
让我知道它是否有效?