2011-02-05 2 views
1

ASP.NET MVC를 배우려고합니다. 따라서 테스트 프로젝트로이 목록에서 인덱스 목록을 표시하고 도시를 클릭하면 해당 도시의 속성을 볼 수 있습니다 . 그래서 지금은 도시의 목록을 확인하고 나는 내가 URL 등을 얻을 하나를 클릭 한 후EF에서 내부 조인을 반환하십시오.

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 
     ); 

    } 

을 : my edmx

은 그럼 좋은 URL을 마련하기 위해 Global.asax에 약간의 변경을했다 : /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 == 도시 및 빨간색 경계가없는 곳을 추가하려고했지만 언제 나는 실행한다 : 사전에 전달 된 모델 항목은 'System.Collections.Generic.List'1 [accomm2.Models.City]'유형이지만이 사전에는 'System.Collections.Generic'유형의 모델 항목이 필요하다. IEnumerable'1 [accomm2.Models.Property] '. – Teodor

+0

이름을 얻으려면 City 테이블에 가입해야합니다. 이 경우 도시 ID가 필요하지 않습니다. – anon

관련 문제