如何使用asp-route-paramName路由对象

问题描述 投票:-1回答:1

我在我的视图中使用asp-route-paramName:

<btn class="btn btn-danger" asp-action="ChangePrivacy" asp-controller="AdminManager"
     [email protected](@other)
     [email protected] >@other.ToString()</btn>

我想将枚举传递给控制器​​,所以我将枚举转换为int然后转换为字符串。是否可以通过使用asp-route将枚举或类(不是字符串)之类的对象传递给控制器​​?

asp.net asp.net-core view
1个回答
0
投票

这里是一个工作示例,如下所示:

型号:

public class Test
{
    public int UserId { get; set; }
    public ErrorCode Code { get; set; }
}
public enum ErrorCode
{
    None = 0,
    Unknown = 1,
    ConnectionLost = 100,
    OutlierReading = 200
}

查看:

[btn不支持标签帮助程序。您需要使用表格来调用api:

@model Test

<form asp-action="TestEnum" asp-controller="Home" asp-route-to="@Model.Code">
    <input type="submit" class="btn btn-danger" value="PassEnum" />
</form>
<form asp-action="TestModel" asp-controller="Home" asp-all-route-data="@(new Dictionary<string, string> { { "to.Code", Model.Code.ToString() },{ "to.UserId",Model.UserId.ToString()} })">
    <input type="submit" class="btn btn-danger" value="PassModelWithEnum" />
</form>

控制器:

public IActionResult Index()
{
    //for easy testing,I set the value by default...
    var model = new Test()
    {
        UserId =1,
        Code = ErrorCode.OutlierReading
    };
    return View(model);
}
public IActionResult TestModel(Test to)
{
    return RedirectToAction("Index");
}
public IActionResult TestEnum(ErrorCode to)
{
    return RedirectToAction("Index");
}

结果:enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.