如何将通用类型从视图传递到控制器

时间:2019-09-10 13:49:45

标签: c# generics model-view-controller

我希望我的MVC视图将类型作为结果发送给参数,以便我可以在通用类中使用该类型

    public ActionResult ManageData(T genericType) 
    {
        var result = new BaseData<genericType>().GetSharedData();
        return View(result);
    }

1 个答案:

答案 0 :(得分:-1)

您不能具有通用控制器方法。我不确定您的用例是什么,但是您可以做类似的事情

public ActionResult ManageData(string type) 
{
    switch (type) {
        case 'first':
            return View(new BaseData<FirstType>().GetSharedData());
        case 'second':
            return View(new BaseData<SecondType>().GetSharedData());
        default:
            return View();
    }
}

当然,您可以通过将switch移至某种BaseDataFactory或使用string enums而不是单纯的strings来改善这一点,从而更轻松,更易读{{1} }-> string映射。