将带有 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的主要内容,如果未能解决你的问题,请参考以下文章
Jquerydirtyforms 在 DIV click 和 window.location.href 上无法正常工作
一个关于window.location.href=window.location.href的问题?