将带有 window.location.href 的参数传递给 MVC ActionResult

Posted

技术标签:

【中文标题】将带有 window.location.href 的参数传递给 MVC ActionResult【英文标题】:Pass parameter with window.location.href to MVC ActionResult 【发布时间】:2014-03-01 08:22:36 【问题描述】:

我正在尝试找出最好的方法,并且已经看到了很多建议,但无法让任何东西完全正确地工作,我宁愿先用最好的方法去做。

这是控制器上的 ActionResult:

public ActionResult Details(string selectedArtist)

    //other code
    return View(selectedArtist)

这是客户端上的javascript

$('#results').on('click', '.item', function () 
        var selectedArtist = $(this).data('artistInfo');
        var selectedId = encodeURIComponent('ARE602H1187FB3B8F8')
        var url = '@Url.Action("Details", "Artist", new  id = "__id__" )';
        window.location.href = url.replace('__id__', selectedId);
    )

理想情况下,我希望将 selectedArtist 对象传递给控制器​​。它基本上是一个与我拥有的 Artist 模型匹配的 javascript 类。现在,虽然作为测试,我只是试图将 Id 作为字符串传递给控制器​​并且无法将其传递给控制器​​,但它总是显示为 NULL。

它正在构建的请求对我来说看起来不错“.../Artist/Details/ARE602H1187FB3B8F”。但是,我正在调试,控制器上的参数总是以 NULL 结尾。

我错过了什么吗?和/或有没有更好的方法来做到这一点?提前致谢。

【问题讨论】:

【参考方案1】:

两个选项。更新您的路由表以正确允许将带有slug“ARE602H1187FB3B8F”的路由路由到适用的操作方法。或者,您可以将id 作为查询字符串参数传递,从而使用路由表中的默认路由:

... Artist/Details?selectedArtist=ARE602H1187FB3B8F

【讨论】:

动作方法不期待别的东西吗...selectedArtist? 对不起,我对 MVC 还很陌生。当您说更新路由表时。你在谈论RouteConfig吗?您将在哪里更改它处理 URL 的方式?即 url: "controller/action/id" ..? @mrshickadance 是的,我就是这个意思。

以上是关于将带有 window.location.href 的参数传递给 MVC ActionResult的主要内容,如果未能解决你的问题,请参考以下文章

window.location.href跳转传参并接收参数

window.location.href跳转传参并接收参数

Jquerydirtyforms 在 DIV click 和 window.location.href 上无法正常工作

一个关于window.location.href=window.location.href的问题?

window.location.href 重定向不适用于 url 中的 #

window.location.href进行页面跳转+传参数