如何在不更改URL .NET Core的情况下进行重定向

时间:2018-08-07 05:44:13

标签: asp.net-mvc asp.net-core .net-core asp.net-mvc-routing

我的视图中有一个按钮:

<td>
  <button id="btn" class="button btn-primary" type="button" onclick="location.href='@Url.Action("RunAll", new { id = @id })'"> Run Test</button>
  <img id="loading" src="img/ajax-loader.gif" alt="" style="display:none;" />
</td>

在HomeController中调用哪个方法:

  public IActionResult RunAll(int id) {
        _service.RunAll(id);
        var items = _service.GetAllTests<MyClass>();
        return RedirectToAction("Index");
    }

执行此方法后,我想重定向到同一页面(localhost:5000),但是当我运行我的应用程序时,在Windows上将Linux服务器URL更改为http://localhost:5000/Home/RunAllTests/374可以正常工作。有没有解决方法或解决方法?

1 个答案:

答案 0 :(得分:0)

如果使用.net core,则可以在如下视图中轻松调用定位标记:

    @model YourModel
    <!DOCTYPE html>
    <html>
    <body>
    <a asp-controller="Home"
       asp-action="RunAll" 
       asp-route-id="@Model.Id">Run Test</a>
    </body>
    </html>

在控制器中,您的代码如下:

[Route("Home/{id:int}")]
public IActionResult RunAll(int id) {
    _service.RunAll(id);
    var items = _service.GetAllTests<MyClass>();
    return RedirectToAction("Index");
}

在Startup.configure中,您可能具有默认路由:

app.UseMvc(routes =>
{

 // default route 
 routes.MapRoute(
    name: "default",
    template: "{controller=Home}/{action=Index}/{id?}");
 });