MVC使用参数从jQuery重定向到View

时间:2013-12-11 03:35:18

标签: javascript jquery asp.net-mvc url-redirection

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

我正在尝试重定向到“详细信息”页面。元素中有一个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; 
        })

以下是Controller上的功能:

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

我不确定我是否会以正确的方式解决这个问题,但是我会对此表示感谢,我已暂停了一段时间。谢谢!

4 个答案:

答案 0 :(得分:24)

如果您的点击处理程序被成功调用,那么这应该有效:

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

编辑:在这个特殊情况下,假设action方法参数是一个 nullable 的字符串,那么如果是NestId == null,则不会导致任何异常,因为ModelBinder不会抱怨它。

答案 1 :(得分:3)

  

我曾经这样做过

     

视图

<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不会获得 amp; 参数

答案 2 :(得分: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; 
        })

答案 3 :(得分:-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; 
                })