C# Javascript window.location在MVC3中不工作

C# Javascript window.location在MVC3中不工作,c#,javascript,jquery,asp.net-mvc,asp.net-mvc-3,C#,Javascript,Jquery,Asp.net Mvc,Asp.net Mvc 3,我有一个页面,通过名为EntityIndex的ActionResult呈现,该页面将int id作为参数并加载该实体 在该视图中,用户可以从下拉列表中选择其他相关实体,并且应通过将所选ID从下拉列表发送到具有新ID的相同操作EntityIndex,从而重新加载视图 我在下拉列表中使用jQuery更改事件来导航和重新加载页面: $("#RelatedEntity").change(function () { window.location = '@Url.Action("EntityInd

我有一个页面,通过名为
EntityIndex
ActionResult
呈现,该页面将
int id
作为参数并加载该实体

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

我在下拉列表中使用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

出于某种原因,
窗口.location
触发
@Url.Action
将操作视为字符串,而不是要导航到的操作。。。
Url.Action
有什么问题使它无法正常运行?

您的JQuery有点不正常。使用默认路由并指定无ID将生成:

/控制员/行动/

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

$("#RelatedEntity").change(function () {
    window.location = '@Url.Action("EntityIndex")' + $(this).val();
});
应给您(假设值为23):

/财务主任/行动/23


您的JQuery有点不对劲。使用默认路由并指定无ID将生成:

/控制员/行动/

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

$("#RelatedEntity").change(function () {
    window.location = '@Url.Action("EntityIndex")' + $(this).val();
});
应给您(假设值为23):

/财务主任/行动/23


我认为你的问题是这个问题的重复:@JanAagaard它不是一个复制品,这更多的是关于路由。我认为你的问题是这个问题的重复:@JanAagaard它不是一个复制品,这更多的是关于路由。不幸的是,这不起作用,使用它我导航到它不会给我一个巨大的丑陋的IIS错误,但是更多的是“这个字符串参数到底是什么?”输入errorAh等等,你是想在外部JS文件中使用它还是在Razor视图之外的其他地方使用它?是的!此JS位于单独的文件Entity.JS中,位于document.ready部分中,并通过脚本tagAh引用到视图中,因此您不能在外部文件中使用Razor语法,您需要做的是将Razor生成的链接存储在隐藏的输入中,或者从视图中调用外部JS文件中的函数,并将Razor生成的链接作为参数传递给函数,然后将其全局存储在JS文件中的变量中。在JS文件中使用
@URl…
实际上就是使用带有@in:)的字符串。哈哈哈,别担心,这会发生在我们当中最好的人身上:)。我肯定我以前试过,但失败了!不幸的是,这不起作用,使用我导航到的,不会给我一个大的丑陋的IIS错误,我得到的,但更多的是一个'这该死的字符串参数是什么?'键入errorAh等等,你想在一个外部JS文件或其他东西,而不是剃须刀视图中使用它吗?是的!此JS位于单独的文件Entity.JS中,位于document.ready部分中,并通过脚本tagAh引用到视图中,因此您不能在外部文件中使用Razor语法,您需要做的是将Razor生成的链接存储在隐藏的输入中,或者从视图中调用外部JS文件中的函数,并将Razor生成的链接作为参数传递给函数,然后将其全局存储在JS文件中的变量中。在JS文件中使用
@URl…
实际上就是使用带有@in:)的字符串。哈哈哈,别担心,这会发生在我们当中最好的人身上:)。我肯定我以前试过,但失败了!