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

时间:2014-02-05 03:38:58

标签: javascript jquery asp.net-mvc

我正在努力找出最好的方法,并且已经看到了很多建议,但是无法让任何事情正常工作,而宁愿先做最好的方法。

这是Controller上的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对象传递给控制器​​。它基本上是一个javascript类,匹配我的Artist模型。现在虽然作为一个测试我只是试图将一个Id作为一个字符串传递给控制器​​并且无法将其传递给它,但它总是以NULL形式出现。

它正在建造的请求对我来说非常好“...... /艺术家/细节/ ARE602H1187FB3B8F”。但是,我正在调试,控制器上的参数总是为NULL。

我错过了什么吗?和/或有更好的方法吗?提前致谢。

1 个答案:

答案 0 :(得分:5)

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

... Artist/Details?selectedArtist=ARE602H1187FB3B8F