2011-02-05 3 views
1

Я пытаюсь изучить ASP.NET MVC, поэтому я сделал это как тестовый проект, где я хочу отображать в Index список городов и когда вы нажимаете на город, чтобы увидеть свойства в этих городах , my edmxВозвращение внутреннего соединения в EF

Тогда я сделал некоторые изменения в global.asax для того, чтобы придумать хорошие адреса:

public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
     routes.MapRoute(
      "Home-Browse", 
      "Accommodation-{city}", 
      new { controller = "Home", action = "Browse", city = "" }); 

     routes.MapRoute(
      "Default", // Route name 
      "{controller}/{action}/{id}", // URL with parameters 
      new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
     ); 

    } 

Так что теперь после того, как я вижу, список городов и я нажимаю один я получаю URL, как: /Accommodation-Amsterdam Моя проблема заключается в том, что я не знаю, как сделать внутреннее соединение, чтобы сообщить контроллеру показать мне свойства в выбранной области. (Я сказал вам, что я только учусь это)

Мой домашний контроллер:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 
using accomm2.Models; 

namespace accomm2.Controllers 
{ 
    [HandleError] 
    public class HomeController : Controller 
    { 
     dataEntities _db; 

     public HomeController() 
     { 
      _db = new dataEntities(); 
     } 


     public ActionResult Index() 
     { 
      ViewData.Model = _db.Cities.ToList(); 

      return View(); 
     } 

     public ActionResult Browse() 
     { 
      //ViewData.Model = _db.Properties.ToList(); 


      var properties = from c in _db.Cities 
          from p in c.Properties 
          where c.CityId == CityId 
         select c; 


      return View(properties.ToList()); 

     } 
    } 
} 

Может кто-нибудь помочь мне с моим запросом Linq или по крайней мере направить меня на правильный путь?

ответ

1

На вашем контроллере просмотра просто добавьте string city в качестве аргумента, и он будет волшебным образом заселен MVC.

+0

Спасибо, но все еще там, где c.CityId == CityId находится в красном цвете и говорит мне, что имя CityId не существует в текущем контексте ... – Teodor

+0

попытался добавить, где c.CityName == Город и нет красной границы, но когда Я запустил i get: Элемент модели, переданный в словарь, имеет тип «System.Collections.Generic.List'1 [accomm2.Models.City]», но для этого словаря требуется элемент модели типа «System.Collections.Generic. IEnumerable'1 [accomm2.Models.Property]. – Teodor

+0

Вам также нужно будет присоединиться к вашей таблице City, чтобы добраться до названия. В этом случае вам не нужен идентификатор города. – anon

Смежные вопросы