2010-05-07 17 views
3

RepositoryASP.NET MVC CheckBoxes Проблема

пространства имен MvcApplication1.Models { общественного класса GroupRepository { EgovtDataContext дб = новая 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" /> 

<% } %> 

Дело в том, что он не может найти идентификатор группы и отображения следующее сообщение об ошибке. Каково решение?

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

Что такое FindGroups() return? Есть ли какой-нибудь html? – hunter

+0

public IQueryable FindGroups() { возвращение из группы в FindAlgroups() orderby Group select Group; } – maztt

+0

Что такое пространство имен группы? Я предполагаю, что это не 'System.Text.RegularExpressions.Group' – hunter

ответ

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 Стиль Посмотрите с помощью LINQ

(ViewData["Group"] as List<MyNamespace.Blah.Group>) 
    .ForEach(g => Response.Write(
     Html.CheckBox("Inhoud", true, new { value = g.int_GroupId }))); 
+0

Где находится' .ForEach'? Это метод расширения, который вы применили к IEnumerable? –

+0

О, извините. Здесь: http://msdn.microsoft.com/en-us/library/bwabdf9z.aspx. Очень хорошо. –

+0

спасибо! Я не знаю, является ли это более читаемым, но он уверен, выглядит красиво и делает флажок, как хочет MVC. – hunter

1

Я думаю, что вы имеете ссылочную проблему, код в ASPX считает, что вы говорите о System.Text.RegularExpressions.Group, а не типе группы вы возвращающиеся из вашего ActionResult, где вы используете Group вам нужно будет убедиться, что это Group вы хотите, либо удалить, используя для System.Text.RegularExpressions пространства имен, или если вам нужно, что полностью уточнят Group с пространством имен

1

Поправьте меня, если я ошибаюсь, но это выглядит например, это может быть namespace issue. Group находится в области System.Text.RegularExpressions.Group, и я предполагаю, что у вас есть таблица в ваших репозиториях, которая называется Group. Попробуйте помещать пространство имен в объявление типа в своем forloop, то есть из ваших репозиториев, поэтому он не путает его с System.Text.RegularExpressions.Groupnamespace.

2

Включите ваше пространство имен для вашего класса группы ваших 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" /> 
<% } %> 
Смежные вопросы