【问题标题】:Pass parameter with window.location.href to MVC ActionResult将带有 window.location.href 的参数传递给 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 结尾。

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

【问题讨论】:

    标签: javascript jquery asp.net-mvc


    【解决方案1】:

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

    ... Artist/Details?selectedArtist=ARE602H1187FB3B8F
    

    【讨论】:

    • 动作方法不期待别的东西吗...selectedArtist?
    • 对不起,我对 MVC 还很陌生。当您说更新路由表时。你在谈论RouteConfig吗?您将在哪里更改它处理 URL 的方式?即 url: "{controller}/{action}/{id}" ..?
    • @mrshickadance 是的,我就是这个意思。
    猜你喜欢
    • 2014-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多