как передать один-ко-многим из контроллера для просмотра в mvc4

Итак, это будет после изменений, с которыми вы, ребята, помогли мне, я предполагаю, что я где-то получаю синтаксическую ошибку

Посмотреть

@model OilNGasWeb.ModelData.Clients

@{
ViewBag.Title = "Index";
}


County's for  

<p>
@Html.ActionLink("Create New", "Create",new { id = Model.ClientID },null) 
</p>





    
        @Html.DisplayNameFor(model => model.County) 
    

    
        @Html.DisplayNameFor(model => model.Note) 
    

    
        @Html.DisplayNameFor(model => model.Comment) 
    



@foreach (var item in Model.Countys) {


    
        @Html.DisplayFor(modelItem => item.County)
    

    
        @Html.DisplayFor(modelItem => item.Note)
    

    
        @Html.DisplayFor(modelItem => item.Comment)
    

    
        @Html.ActionLink("Edit", "Edit", new { id=item.CountyID }) 
        @Html.ActionLink("Details", "Details", new { id=item.CountyID }) 
        @Html.ActionLink("Delete", "Delete", new { id=item.CountyID })
    


}


Клиенты модели

 [Table("Clients")]
public class Clients
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]

    public int ClientID { get; set; }

    public string Client { get; set; }
    public string Address { get; set; }
    public string State { get; set; }
    public string City { get; set; }
    public string County { get; set; }
    public int Zip { get; set; }
    public string Phone { get; set; }
    public string LogoLocation { get; set; }
    public string ContactName { get; set; }
    public string ContactPhone { get; set; }
    public string ContactEmail { get; set; }
    public int Authorized { get; set; }

    public string Note { get; set; }
    public string Comment { get; set; }

    public virtual ICollection Countys { get; set; }

}

Модель Граф

 [Table("Countys")]
public class Countys
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]

    public int CountyID { get; set; }
    public int ClientID { get; set; }

    public string County { get; set; }
    public string Note { get; set; }
    public string Comment { get; set; }

    public virtual ICollection Townships { get; set; }

}

Графический контроллер

public ActionResult Index(int id)
{
var cnty = from r in db.Clients
where r.ClientID == id
select r;
if (cnty != null)
{
return View(cnty); // View returns an error here
}
return HttpNotFound();

View возвращает ошибку, но я не могу зайти в нее ... чтобы выяснить, что это ... идеи?

Ответы на вопрос(2)

которые не являются частью вашей доменной модели, и передавать их практически во все виды.

Посмотреть модель:

public class IndexViewModel
{
  public int ClientID { get; set; }
  public IEnumerable<clients> Clients { get; set; }
}
</clients>

Просмотр (.cshtml): Я

@model OilNGasWeb.Models.Home.IndexViewModel

@{
  ViewBag.Title = "Index";
}


<h2>County's for </h2> 

<p>
  // send a ClientID with this action link
  @Html.ActionLink("Create New", "Create", new { clientid = Model.ClientID } ) 
</p>

//... etc

Я также рекомендую указать ваши переменные. Все это компилируется, так чтоКак правило, лучше писать поддерживаемый код поверх кратких переменных.

контроллер

public ActionResult Index(int id)
{
  //Lambda (just for an example, there is nothing wrong with LINQ expressions)
  var client = db.Clients
    .FirstOrDefault(c => c.ClientID == id);

  if (client != null)
  {
    var model = new IndexViewModel();
    model.ClientID = id;
    model.Clients = // some value I don't understand

    // My preference/opinion (programming religion) is to prefix with this
    // so others know if the method is *this* class, *base* class etc
    return this.View(model); 
  }

  return HttpNotFound();
}
 Erik Philips01 июл. 2013 г., 22:21
я не уверен, чтоничего не сработало средства.
 Pakk01 июл. 2013 г., 21:58
просто между прочим, как ни странно, ничего не работало linq или лямбда, но это сделал[Bind (Префикс =»Я бы")] int CID) {var clnt = db.Clients.Find (CID); if (clnt! = null) {return View (clnt); } return HttpNotFound (); I '
 Pakk24 июн. 2013 г., 22:41
спасибо будет реализовать сообщить утром
 Pakk01 июл. 2013 г., 22:26
Я хотел сказать, что ничего не было передано, кроме ClientID, из модели клиента, использующей Linq или Lambda, должен был найти этот метод BIND, и он передал все данные моих моделей, я очень хотел обновить всех
 Erik Philips24 июн. 2013 г., 21:00
Обновлено за ваши комментарии.
 Pakk24 июн. 2013 г., 18:39
Могли бы вы объяснить "public Guid ClientID {get; задавать; }» я запутался в том, как он знает ссылку на таблицу ClientID и ее идентификатор ...
Решение Вопроса

данные, необходимые представлению, находятся на другом уровне, чемПроходят Вы'в настоящее время отправляюIEnumerable на вид. Но, как вы спросите, что происходит, когда перечисление пусто? Где представление может получить другие данные, которые ему нужны? (В этом случаеClientID.)

Какой видна самом деле потребности этоClients, Потому что это'ищет кусокClientsданные, а именноClientID, Конечно, эти данные также существуют наCountys объекты, но этоне имеет значения для концептуальной природы самих данных. Представление в этом случае показывает информацию оClients объект. В частности:

int ClientID
IEnumerable<countys> Countys
</countys>

Если последний из этих двух нетогда пустоМожно быть обнаруженным непосредственно из этих данных. Это также может быть выявлено по совершенно другим и не связанным данным. Но дело в том, что точка зрения концептуально действует наClients уровень, а не наIEnumerable уровень.

Так что вы'd соответственно измените представление и передайте ему нужный объект:

public ActionResult Index(int id)
{
    var client = (from r in db.Clients
                 where r.ClientID == id
                 select r).SingleOrDefault();

    if (client != null)
        return View(client);

    return HttpNotFound();
}
 David24 июн. 2013 г., 18:36
@Pakk: Вы можете перебратьCountys имущество тот'на модели. Что-то вроде:foreach (var county in model.Countys)
 Pakk24 июн. 2013 г., 19:29
Да, вроде .... я могуне могу понять ошибку, и ямы сделали именно то, что вы мне посоветовали, я просто предполагаю, что изменения сделали эту ошибку ... Я не могу пройти дальше уровня контроллера, и я знаю, что устранение "@ model OilNGasWeb.ModelData.Clients " решит ошибку, поэтому спросил, был ли у вас другой способ или вы знали, почему он ошибался .... возможный намек, неисчислимая ошибка?
 David24 июн. 2013 г., 18:10
@Pakk: так как вид для одногоClients объект, то его объявление модели будет@model OilNGasWeb.ModelData.Clients  (Возможно, именование типов вызывает путаницу? Единственный экземпляр "клиент» называетсяClients, что очень не интуитивно понятно. Это становится еще более не интуитивным, когда у вас есть списокCountys объекты называютсяCountys.)
 Pakk24 июн. 2013 г., 17:52
Хорошо, отлично, как можно получить доступ к этому округу, если вы нене возражаю, я спрашиваю, потому что я попробовал это, а в настоящее время на самом верху моей точки зрения - - @model IEnumerable <OilNGasWeb.ModelData.Clients> - и я использовал для displayNamefor (модель => model.County) но вот если бы я использовал modeldata.countys, как бы я получил доступ к пройденным графствам?
 David24 июн. 2013 г., 19:24
@Pakk: в чем ошибка? Это может быть что-то совершенно не связанное с рассматриваемым вопросом и заслуживающее совершенно нового вопроса. Первоначальная проблема заключалась в том, как передать другой тип модели в представление, которое мымы сделали.
 Pakk24 июн. 2013 г., 19:11
Обновил вопрос, чтобы показать, что у меня есть в моем коде сейчас, у меня нет синтаксической ошибки из-за ошибки msg, поэтому я запутался в том, почему она вызывает ошибку, и во-вторых, почему я могу 'шаг за шагом, чтобы решить проблему ... есть идеи?
 Pakk24 июн. 2013 г., 19:22
если бы я закомментировал все, кроме заголовка, и @ model OilNGasWeb.ModelData.Clients, я все равно получил бы ошибку ... в том же состоянии и удалив строку @ model OilNGasWeb.ModelData.Clients, я получил отображаемое представление .. ... идеи о том, почему это ошибка?
 Pakk24 июн. 2013 г., 18:18
Хорошо, так что это имеет смысл тогда, я полагаю, я назвал их клиентами, потому что я собираюсь использовать ту же модель для списка клиентов в какой-то момент для страницы администратора ... но вернемся к проблеме под рукой простого Клиента. (Имя поле в графствах) должны получить мне правильные данные?
 Pakk24 июн. 2013 г., 18:34
верно, но вы заставили меня изменить @ модель с Ienumerable <Countys> @Model OilNGasWeb.ModelData. Клиенты могутт петля ... или я вас правильно понял?
 Pakk24 июн. 2013 г., 19:43
я собираюсь пойти дальше и открыть другой вопрос, явно выясняя, как отлаживать mvc4 бритву, потому что я могу 'и если он будет работать нормально, он будет помечен как правильный, спасибо за вашу помощь, Дэвид
 Pakk24 июн. 2013 г., 18:40
-.- попробую то, что может только придумать
 David24 июн. 2013 г., 19:30
@Pakk: Если я не знаю, в чем ошибка, то нетЯ могу многое посоветовать, извините.
 Pakk24 июн. 2013 г., 18:23
отредактировал верх, пожалуйста, посмотрите на мой взгляд с правками
 David24 июн. 2013 г., 19:13
@Pakk:@Html.DisplayNameFor(model => model.County) победил'не работает в этом случае. Но ты'повезло, потому что естьПростое решение.@Html.DisplayNameFor(model => model.Countys.First().County) должен Работа. Это'противоречит интуиции, потому что.First() должен выдать исключение, если перечисление пусто, но в этом случае среда выполнения нена самом деле выполняем этот оператор, но вместо этого следуем за типом и используем отражение, чтобы определить нужное ему поле.
 David24 июн. 2013 г., 18:30
@Pakk: в этой HTML-таблице должен быть циклт там? Было бы отображать одну строку для каждогоCountys экземпляр, связанный с этимClients пример. Для ссылки действия вы можете добавить к ней значения маршрута как анонимный объект. Что-то вроде этого:@Html.ActionLink("Create New", "Create", "ControllerName", new { id = model.ClientID }, null) который использует одну из нескольких доступных перегрузок для этой функции:msdn.microsoft.com/en-us/library/...
 Pakk24 июн. 2013 г., 19:33
да, ладно, может быть, я заболел, просто задаю другой вопрос, я привык к vb.net winforms, перебирая буквально все, ... вот когда я подхожу к своему мнению, jsut переходит на страницу с ошибкой, не давая мне даже малейшего понятия о том, что ошибка может возможно быть
 Pakk24 июн. 2013 г., 18:05
Да, я верю, что вы правы, 1 клиент, много округов, в которых есть много поселков, в которых много ..... асо. Так что я'Я прохожу Клиентов, но, на мой взгляд, я нене хочу, чтобы это было Ienumerable <>? - Я новичок в этом, и я могу понять, почему я не зацикливаюсь на моих клиентах, так как я передаю идентификатор, который мне действительно нужен, так как бы одна ссылка ссылалась на одного клиента (или я просто убрал ключевое слово Ienumerable)?
 David24 июн. 2013 г., 17:57
@Pakk: Почему ваша модельIEnumerable? Дон»т вам нужен только одинClients объект? Что касается пройденногоCountys значения ... нет поля с именемCounty наClients объект. Поле на вашемClients объект называетсяCountysи содержит перечисление всего объекта, поэтому яЯ не уверен, как рамки будут интерпретировать "отображаемое имя" для этой собственности. По мнению, неесть ли цикл через это свойство в перечислении? Перечислимый объект в этом цикле будет иметь типCountys так что должен иметьCounty имущество.

Ваш ответ на вопрос