2013-12-11 73 views
7

我已经看到一些相关的帖子,但似乎无法得到它的工作。随着重定向,我得到'资源无法找到错误'。MVC重定向到从jQuery查看参数

我正在尝试重定向到“详细信息”页面。元素中存在一个ID,我将其作为NestId存储,以便我最终能够传递给View。现在我只想重定向到详细信息页面,没有模型或任何附加到它的东西。我只是想让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(); 
    } 

我不知道如果我要对这个正确的方式,但帮助将不胜感激,我已经停滞了一段时间。谢谢!

回答

19

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

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

编辑:在这种特殊情况下,考虑到操作方法参数是一个字符串,它是可空,那么如果NestId == null,赢得了”因为ModelBinder不会抱怨它,所以不会引发任何异常。

+0

这似乎确实完成了工作。有没有解决这个url的硬编码? – mrshickadance

+1

您可以将其替换为:@ Url.Action(“Details”,“Artists”,new {NestId ='+ NestId +'})'',如@ABs所示。另外,考虑接受帮助你以帮助他人的答案。 – Daniel

+0

是的,我正在等待,看是否有解决方案,没有硬编码。当我尝试了你和AB说的选项时,我得到一个错误(我在下面评论他)。 – mrshickadance

-1

重定向查询字符串

$('#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; 
       }) 
+0

我在NestId附近发现一个错误,说网址上的字符字符数太多... – mrshickadance

+0

你可以试试,var url ='@ Url.Content(“〜/ Artists/Details?NestId ='+ NestId +'”)' –

0

这也将工作我相信:

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

@NestId不起作用。 –

2

我用来做这样的

视图

<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" })))'; 

的JavaScript文件

var url = _addInvoiceUrl.replace('_transactionIds_', warehouseTransactionIds).replace('_payeeId_', payeeId); 
     window.location.href = url; 

在这样我可以能够通过使用@Html传递的参数值的需求..

.Raw,url不会得到am磷;参数

+0

我喜欢这个解决方案,非常干净! :) – Schoof

相关问题