我在我的视图中使用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将枚举或类(不是字符串)之类的对象传递给控制器?
这里是一个工作示例,如下所示:
型号:
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");
}