Javascript window.location在MVC3中不起作用

时间:2012-05-22 16:38:38

标签: c# javascript jquery asp.net-mvc asp.net-mvc-3

我有一个页面通过名为ActionResult的{​​{1}}呈现,该EntityIndexint id作为参数并加载该实体。

在此视图中,用户可以从下拉列表中选择其他相关实体,并通过将下拉列表中的所选ID发送到具有新EntityIndex的相同操作ID来重新加载视图。

我在下拉列表中使用jQuery更改事件来导航和重新加载页面:

$("#RelatedEntity").change(function () {
    window.location = '@Url.Action("EntityIndex", new {id = ""})' + '/' + $(this).val();
});

这是行动

public ActionResult EntityIndex(int id) {
    ... gets entity by id here ...
    return View(model);
}

该操作在命中时工作正常,但上面的jQuery行失败并显示错误:

http://localhost:1798/Entity/EntityIndex/@Url.Action("EntityIndex", new {id = ""})/539

出于某种原因,window.location触发@Url.Action将操作视为字符串而不是导航到的操作... Url.Action的问题是什么?行为正确吗?

1 个答案:

答案 0 :(得分:5)

您的JQuery非常 off 。使用默认路由并指定无ID将生成:

  

/控制器/动作/

所以你需要做的就是把你的价值放在最后。试试这个:

$("#RelatedEntity").change(function () {
    window.location = '@Url.Action("EntityIndex")' + $(this).val();
});

应该给你(假设价值是23):

  

/控制器/动作/ 23