2011-09-21 3 views
0

javascript에서 사용할 URL을 생성해야합니다. 나는 현재의 솔루션이 매우 가독하다고 생각하지 않는다.Asp.NET MVC/Javascript URL 생성 용이성 향상

//Navigation during load: Id from MVC or hash or zero. 
var m_departmentId = <%= ViewContext.RouteData.Values["id"] ?? 0 %>; 
if(0 == m_departmentId) 
{    
    var hash = location.hash;    
    //Only one hash value 
    var id = parseInt(hash.substring(2)); 

    //If it's a real Id, use it. 
    if (!isNaN(id)) { 
     m_departmentId = id; 

    } 
} 

var gridUrl = '<%= Url.Action("GetEmployees", "Company", new { area = "" }) %>/' + m_departmentId; 

이 스크립트는 jp-variables로 aspnet-variables를 변환하는 내 페이지 javascript 맨 위에 위치합니다.

첫 번째 자바 스크립트를 제거 할 수 있습니까?
마지막 행의 가독성을 향상시킬 수 있습니까? Imho 그것은 특히 내 페이지 자바 스크립트 내에서 끔찍한입니다.
기타 개선 사항?


개선 1 : 조치 인수를 사용하지 않은 경우 작업이 경로에서 제거 되었기 때문에 작업이, 경로의 기본 동작 때

var gridUrl = '<%= Url.Content("~/Company/GetEmployees/") }) %>' + m_departmentId; 

T4MVC가 작동하지 않았다.

+0

왜 해시가 필요합니까? –

+0

@Darin Dimitrov 해당 페이지 (트리 및 그리드와의 인터페이스와 같은 탐색기)에서 아약스 탐색 (딥 링크 포함)에 사용됩니다. –

답변

2

해시를위한 JavaScript가 필요하다고 생각합니다. 해시를 서버 측에서 읽을 수는 없습니다.

T4MVC은 "못생긴"URL 생성에 도움이 될 수 있습니다. 적어도 마법의 문자열을 제거 할 것입니다 (여전히 UrlHelper를 사용하여 그 경로를 간다고 믿을 수는 없습니다).

+0

이 작동합니다 : 'var gridUrl = '<% = Url.Action (MVC.Company.GetEmployees()) %> /'+ m_departmentId; 그것은별로 좋지는 않지만 적어도 합리적인 순서입니다. –

+0

나는 또한 이러한 상황에서 형식 문자열을 사용하는 경향이 있습니다. 나는 그것이 아마 여기에 과잉이지만 가독성에 추가한다고 생각한다. – JoshNaro

+0

나중에 id를 추가해야 할 때 index라는 작업에 문제가있는 경우 (예 : "{0}/{1}", Url.Action (MVC.Company.GetEmployees()), m_departmentId) . t4mvc 생성 URL은 나중에/Controller/Action/Id 대신/Controller/Id가되는/index를 제거합니다. 이렇게 작성해야했습니다. 'var m_personUrlTemplate ='<% = Url.Content ("~/Person/Index /") %> ';' –