存储库
命名空间MvcApplication1.Models { 公共类GroupRepository { EgovtDataContext db = new EgovtDataContext();
public IQueryable<Group> FindAllGroups()
{
return db.Groups;
}
public IQueryable<Group> FindGroups()
{
return from Group in FindAllGroups()
orderby Group
select Group;
}
public Group GetGroups(int id)
{
return db.Groups.SingleOrDefault(d => d.int_GroupId == id);
}
//
public void Add(Group group)
{
db.Groups.InsertOnSubmit(group);
}
public void Delete(Group group)
{
db.Groups.DeleteOnSubmit(group);
}
//
// Persistence
public void Save()
{
db.SubmitChanges();
}
}
}
CONTROLLER
public ActionResult Index()
{
GroupRepository grouprepository = new GroupRepository();
ViewData["Group"] = grouprepository.FindGroups();
return View();
}
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master"
Inherits="System.Web.Mvc.ViewPage" %>
<% foreach (Group i in ViewData["Group"] as List<Group>)
{ %>
<input type="checkbox" name="Inhoud"
value="<%= i.int_GroupId %>" checked="checked" />
<% } %>
问题是它无法找到组ID并显示以下错误。解决方案是什么?
CS1061: 'System.Text.RegularExpressions.Group' does not contain a definition for 'int_GroupId' and no extension method 'int_GroupId' accepting a first argument of type 'System.Text.RegularExpressions.Group' could be found (are you missing a using directive or an assembly reference?)
答案 0 :(得分:3)
尝试使用FindGroups()使用的类型的命名空间,如下所示:
<% foreach (var i in ViewData["Group"] as List<MyNamespace.Blah.Group>)
{ %>
<input type="checkbox" name="Inhoud"
value="<%= i.int_GroupId %>" checked="checked" />
<% } %>
或向Web.Config添加命名空间引用或将命名空间添加到页眉。我认为你仍然会遇到与`System.Text.RegularExpressions'的命名空间冲突。
MVC Style Look with LINQ
(ViewData["Group"] as List<MyNamespace.Blah.Group>)
.ForEach(g => Response.Write(
Html.CheckBox("Inhoud", true, new { value = g.int_GroupId })));
答案 1 :(得分:2)
将您的Group类的命名空间包含在web.config页面/命名空间
中 <pages>
<namespaces>
...
<add namespace="Com.Example.Foo.Interfaces" />
<add namespace="Com.Example.Foo.Common" />
...
</namespaces>
</pages
使用特定于视图的模型而不是通用ViewData,并将组作为模型的属性传递,以便它可以正确地确定类型。
using Com.Example.Foo.Interfaces;
using Com.Example.Foo.Common;
public class GroupModel
{
public IEnumerable<Group> Groups { get; set; }
}
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master"
Inherits="System.Web.Mvc.ViewPage<GroupModel>" %>
<% foreach (var i in Model.Groups)
{ %>
<input type="checkbox" name="Inhoud"
value="<%= i.int_GroupId %>" checked="checked" />
<% } %>
答案 2 :(得分:1)
我认为您遇到了引用问题,aspx中的代码认为您正在讨论的是System.Text.RegularExpressions.Group
,而不是您从ActionResult
返回的群组类型,您使用{{1}你需要确保它是你想要的Group
,要么删除Group
命名空间的使用,要么你需要它,用你的命名空间完全限定System.Text.RegularExpressions
答案 3 :(得分:1)
如果我错了,请纠正我,但看起来这可能是namespace issue
。
Group
在System.Text.RegularExpressions.Group
的范围内,我猜您的回购中有一个名为Group的表。尝试将名称空间放入forloop中的类型声明中,这是您的回购,因此它不会将其与System.Text.RegularExpressions.Group
namespace
混淆。