单击按钮时如何调用/打开Razor视图

问题描述

我在视图中有一个网格,用户可以选择从网格中选择一个/多个行,然后单击“下一步”按钮,我需要向他们显示一个视图,以便他们可以执行其他任务。

我从同一控制器创建了两个视图。

    public BatchController() : base("BATCH")
    {
    }

    // GET: BatchProcess
    public ActionResult Index()
    {
        return View();
    }

    public ActionResult Final()
    {
        return View();
    }

JavaScript:

    $("#btnNext").click(e => {
    var url = "/Batch/Final";
    window.open('@Url.Action("Final","Batch")');

结果:

enter image description here

在这里想念什么?

解决方法

您的网址不正确的原因是Model.find({ "arrayOfUsers._id": 2 }) 无法成功解析。当我输入错误的URL:@Url.Action("Final","Batch")(缺少window.open('Url.Action("Final","Batch")')会导致解析失败)时,生成的URL如下:

enter image description here

但是我可以看到您以正确的方式对其进行了编码:@。因此,我猜这个js代码可能放在了外部js文件中。如果它是外部javascript文件,则无法解析。以上情况也会出现。

如果必须将window.open('@Url.Action("Final","Batch")')放在外部JavaScript文件中,则可以将属性添加到“下一步”按钮。

@Url.Action

然后外部js通过属性获取网址。

<button class="btn-outline-info" id="btnNext" requestUrl="@Url.Action("Final","Batch")">Next</button>

如果您的js代码不在外部文件中,请检查window.open(document.getElementById('btnNext').getAttribute('requestUrl')) 是否损坏。您可以在剃刀视图中写入@Url.Action(例如Inde.cshtml):

@Url.Action("Final","Batch")

然后运行该应用程序以查看网址,如下所示:

enter image description here