【问题标题】:Improving Asp.NET MVC/Javascript url generation readability提高 Asp.NET MVC/Javascript url 生成的可读性
【发布时间】:2011-11-22 08:13:43
【问题描述】:

我需要生成用于 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;

这个脚本放置在我的页面顶部 javascript 我将 aspnet-variables 转换为 js-variables。

我可以摆脱第一个 javascript 吗?
我可以提高最后一行的可读性吗?恕我直言,这相当可怕,尤其是在我的页面 javascript 中。
其他改进?


改进 1:

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

当动作是路由的默认动作时,T4MVC 不起作用,因为当没有使用动作参数时,动作被从路径中剥离。

【问题讨论】:

  • @Darin Dimitrov 它用于该页面上的 ajax 导航(带有深度链接)(类似于树和网格的浏览器界面)。

标签: javascript asp.net asp.net-mvc url


【解决方案1】:

我认为您需要 JavaScript 来处理哈希。您无法在服务器端读取哈希值。

T4MVC 可以帮助您生成“丑陋”的 URL。它至少会摆脱魔法字符串(仍然无法相信他们使用 UrlHelper 走了那条路)。

【讨论】:

  • 这行得通:var gridUrl = '&lt;%= Url.Action(MVC.Company.GetEmployees()) %&gt;/' + m_departmentId; 并没有好多少,但至少是合理的顺序。
  • 我也倾向于在这些情况下使用格式字符串。我认为它增加了可读性,尽管在这里可能有点矫枉过正。 String.Format("{0}/{1}", Url.Action(MVC.Company.GetEmployees()), m_departmentId);
  • 当我稍后需要添加 id 时遇到了名为 index 的操作的问题。 t4mvc 生成的 url 删除了 /index,这稍后会导致 /Controller/Id 而不是 /Controller/Action/Id。我不得不这样写var m_personUrlTemplate = '&lt;%= Url.Content("~/Person/Index/") %&gt;';
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-08
  • 2013-08-30
  • 1970-01-01
相关资源
最近更新 更多