gpt4 book ai didi

javascript - 为什么这个 URL 数据传递有效而另一个无效?

转载 作者:行者123 更新时间:2023-11-30 15:05:11 26 4
gpt4 key购买 nike

所以在我看来,我有两个从 javascript 运行的 ajax 请求。

第一个 View 实例:

var id = $(element).data("id");
var fullname = $(element).data("fullname");
var count = element.checked ? -1 : 1;
var rowIndex = $(element).closest("tr").index();

$.ajax({
url: "@Url.Action("Edit", "Booking")/" + id + "?fullname=" + fullname + "&type=" + count,

第一个 Controller 实例:

[HttpPost]
public int Edit(int id, string fullname, string type)
{

这会从 ajax 请求中生成的 url 传输 id、fullname 和 type 变量值。完美!

第二个 View 实例:

var type = "Table"; //this will be dynamically set later (could be type=table or type=new)
alert("[" + dateFrom + "] [" + dateTo + "]");

$.ajax({
url: "@Url.Action("Create", "Booking")/" + type + "?datefrom=" + dateFrom + "&dateto=" + dateTo,

第二个 Controller 实例:

[HttpPost]
public JsonResult Create(string type, string dateFrom, string dateTo)
{

第二个实例 url 生成得很好(我认为)所以它指向/Booking/Create/Table?datefrom= 等但是字符串类型变量始终为 null,我如何将类型变量获取为“Table”这个案例?

我似乎无法理解为什么第一个实例有效,但第二个实例却没有,因为它在我看来是一样的。

谢谢

最佳答案

这是因为您的路线定义。在您的路由表中,您有如下所示的通用条目:

routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = "" }
);

看起来像 "{controller}/{action}/{id}" 的行自动将提供的参数映射到漂亮的 URL。请注意,最后一项名为 id。如果您在 URL 中发送一个名为 ID 的参数,它将被转换为漂亮的格式,例如 Home/Index/4。相反,同一 URL 将为 Controller 操作的 id 参数提供 4 的值。

你的第二个例子,你正在传递一个名为 type 的参数,但是,当它是实际 URL 的一部分时,你没有告诉 MVC 如何处理 type 参数的路由(例如 Controller / Action /类型)。因此,MVC 不会将 URL 的最后部分映射到类型参数。

您可以执行以下两项操作之一。

1 - 创建一个查找名为 type 的参数的新路由

routes.MapRoute(
"MyTypeRoute",
"{controller}/{action}/{type}",
new { controller = "Home", action = "Index", type = "" }
);

2 - 在构建 URL 时,像对待其他两个参数一样对待 type 参数

$.ajax({
url: "@Url.Action("Create", "Booking")?type=" + type + "&datefrom=" + dateFrom + "&dateto=" + dateTo,

关于javascript - 为什么这个 URL 数据传递有效而另一个无效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45883327/

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