Javascript MVC重定向到带参数的jQuery视图

Javascript MVC重定向到带参数的jQuery视图,javascript,jquery,asp.net-mvc,url-redirection,Javascript,Jquery,Asp.net Mvc,Url Redirection,我看到过一些与此相关的帖子,但似乎无法让它发挥作用。通过重定向,我得到一个“资源找不到错误” 我正在尝试重定向到详细信息页面。元素中有一个ID,我将其存储为NestId,希望最终能够传递给视图。现在我只想重定向到详细信息页面,没有模型或任何附加到它的东西。我只想让NestId在那里运行,这样我就可以使用它进行更多的AJAX调用 以下是我的jQuery: $('#results').on('click', '.item', function () { var NestId

我看到过一些与此相关的帖子,但似乎无法让它发挥作用。通过重定向,我得到一个“资源找不到错误”

我正在尝试重定向到详细信息页面。元素中有一个ID,我将其存储为NestId,希望最终能够传递给视图。现在我只想重定向到详细信息页面,没有模型或任何附加到它的东西。我只想让NestId在那里运行,这样我就可以使用它进行更多的AJAX调用

以下是我的jQuery:

$('#results').on('click', '.item', function () {
            var NestId = $(this).data('id');
            var url = '@Url.Action("Details, Artists")'; 
            window.location.href = url; 
        })
以下是控制器上的功能:

public ActionResult Details(string NestId)
    {
        ViewBag.NestId = NestId; 
        return View();
    }

我不确定我是否用正确的方法来做这件事,但是我会很感激你的帮助,我已经在这件事上拖延了一段时间。谢谢

如果成功调用了您的单击处理程序,那么这应该可以工作:

$('#results').on('click', '.item', function () {
            var NestId = $(this).data('id');
            var url = "/Artists/Details?NestId=" + NestId; 
            window.location.href = url; 
        })

编辑:在这种特殊情况下,假设action方法参数是一个可为null的字符串,那么如果
NestId==null
,则不会导致任何异常,因为ModelBinder不会对此进行投诉。

使用查询字符串重定向

 $('#results').on('click', '.item', function () {
                    var NestId = $(this).data('id');
                   // var url = '@Url.Action("Details", "Artists",new { NestId = '+NestId+'  })'; 
                    var url = '@ Url.Content("~/Artists/Details?NestId =' + NestId + '")'
                    window.location.href = url; 
                })

我相信这也会起作用:

$('#results').on('click', '.item', function () {
            var NestId = $(this).data('id');
            var url = '@Html.Raw(Url.Action("Artists", new { NestId = @NestId }))';
            window.location.href = url; 
        })
我以前是这样做的

内部视图

通过这种方式,我可以根据需要传递参数值

通过使用@Html.Raw,url将不会得到amp


这似乎确实完成了任务。有没有办法像这样硬编码url?你可以用@url.Action(“细节”,“艺术家”,new{NestId='+NestId+'})代替它,就像@ABs建议的那样。此外,考虑接受帮助你的答案来帮助别人。Yea,我在等待是否有一个解决方案,没有硬编码它。当我尝试你和ABs所说的选项时,我得到了一个错误(我在下面对他的评论)。我在NestId周围得到一个错误,说url上的字符文字太多了…你可以试试这个,var url='@url.Content(“~/Artists/Details?NestId='+NestId+”)’我喜欢这个解决方案,非常干净!:)
<script type="text/javascript">

//will replace the '_transactionIds_' and '_payeeId_' 
var _addInvoiceUrl = '@(Html.Raw( Url.Action("PayableInvoiceMainEditor", "Payables", new { warehouseTransactionIds ="_transactionIds_",payeeId = "_payeeId_", payeeType="Vendor" })))';
var url = _addInvoiceUrl.replace('_transactionIds_', warehouseTransactionIds).replace('_payeeId_', payeeId);
        window.location.href = url;