gpt4 book ai didi

javascript - 在外部 JavaScript 中处理 ASP.NET MVC 路由

转载 作者:行者123 更新时间:2023-12-03 16:25:00 25 4
gpt4 key购买 nike

避免在 JavaScript 中硬编码 URL 的最佳方法是什么(主要在进行 AJAX 调用时使用)?

过去:

  1. 使用 @Url.Action@Url.RouteUrl 的结果呈现 JavaScript 变量>
  2. @Url.Action@Url.RouteUrl 的结果传递给 init/ctor 中的 JavaScript。

有没有更好的办法?

做这样的事情会很好:

var url = $.routes("actionName", "controllerName") // or "routeName" for named routes
$.post(url, { id = 1 }, function() { //.. });

这当然是不可能的(JavaScript 无法直接访问 ViewContext,因此无法访问路由表)。

但我想知道是否有一种方法可以为 JavaScript 设置我自己的“路由表”,只使用我知道它需要的那些? (例如我在 View 中设置它)

人们如何处理这个问题?

最佳答案

尽管我更喜欢在 View 中注入(inject) javascript - 让 HTML 完成它的工作,让 javascript 完成它。下面是模式。

链接

/*A cssclass=ajaxlink is added to all those links which we want to ajaxify*/

//html in view
<a class='ajaxlink' href='@Url.Action("Action","Controller")'>I am An Ajax Link</a>

//generated clean html
<a class='ajaxlink' href='/controller/action'>I am An Ajax Link</a>


//Js


jQuery('.ajaxlink').live('click',function(e){
e.preventDefault(); /*Prevent default behavior of links*/
var url= $(e.target).attr('href');
/*
Now u have url, do post or get:
then append received data in some DOM element.
*/
});

// Controller

public ActionResult()
{
if(Request.IsAjax())
{
/*Return partial content*/
return View();
}
else
{
return View("SomeOther_View.cshtml");

/*
At this point you may reject this request or return full view
whatever you feel is okie.
*/
}
}

通过这种方式,可以处理启用和禁用 javascript 的两种类型的用户。

表单也可以这样做。

关于javascript - 在外部 JavaScript 中处理 ASP.NET MVC 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7864207/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com