2011-11-30 65 views
8

jQuery中,我需要告诉程序去EmployeeController和empl的行动。我怎么告诉它这样做。我想简单的方法来做到这一点,而不使用ajax。MVC jQuery的去控制器动作

+0

你是什么意思?你想导航到一个新的页面? – Dismissile

+0

“前往”?有什么去?整个页面?一个AJAX调用? –

回答

13
window.location.href = "/{controller}/{action}" //in your case, /employee/empl 

这工作,因为在你的Global.asax.cs文件中指定的路线。我建议你这是如何工作的,因为它是MVC的基本原则之一念起来....

+0

更好地使用location.href ='whatever'; – BigMike

+0

@BigMike在最后添加了“.href”。感谢您的反馈,您可能是对的,它可能更清晰,因为window.location是一个对象。 –

+0

如果我想传递一个参数? –

0

有关URI的结构&路由决策的假设,但:

window.location = '/employee/empl/';

+0

只有当他有他的路线设置为'/控制器/ action' – Dismissile

+0

是啊。之前添加了“免责声明”。 – simshaun

5

嗯,不错的反响,到目前为止,但使用魔法字符串URL建设刚刚给我发冷。我宁愿添加一个扩展这样的:

public static string GetUrl(this HtmlHelper, helper, string Action, string Controller, object RouteValues) 
{ 
    UrlHelper Url = new UrlHelper(HttpContext.Current.Request.RequestContext); 
    return Url.Action(Action, Controller, RouteValues); 
} 

,然后在我的js代码中使用:

location.href = '@Html.GetUrl("Action", "Controller", new { foo=Model.Foo })'; 

这是比较一致的,内部在乎路由,并给了我一个集中点做讨厌的东西网址有:)

嗯,还有一两件事,

window.location = "whatever"; 

好,作品,仍然

location.href = "whatever"; 

是可取的。

HTH

+0

已经为此提供了一个帮手:'@ Url.Action(“Action”,“Controller”,new {foo = Model.bar})' –

+0

@KristofClaes:是的,当然了,正如你所看到的它在内部使用,自己的帮手只是有一个集中的方式,我可以在URL上做恶劣的事情,理想情况下,在理想的世界中没有必要这样做,但有时候需求非常有趣,我不得不诉诸于此。当然,我已经删除了示例代码中的逻辑,发布了我的真正帮助者的模拟:) – BigMike

+0

另一个缺点......当此脚本进行重定位不在视图中时会发生什么(因为它不应该是) ?你不能使用你的帮手方法。相反,它应该是完全清楚的重定向到一条路线。 –

2

当应用程序发布时,接受的答案不起作用。 我不得不使用

window.location.href='@Url.Action("ActionName","ControllerName")' 

希望它可以帮助