ASP.NET MVC 3 - 将变量模型传递给控制器

时间:2013-06-14 08:43:21

标签: asp.net-mvc-3

我有这个控制器

public class DownloadController : Controller
{
    [HttpPost]
    public FileContentResult GetFile(MyModel model)
    {
        // Action code
    }
}

这个模型

public class MyModel
{
    public string Test { get; set; }
}

将模型从View传递给控制器​​可以正常工作

@using (Html.BeginForm("GetFile", "Download", FormMethod.Post))
{
    @Html.HiddenFor(m => m.Test)
    <button type="submit" name="submit" class="submit">Download</button>
}

模型正确传递给控制器​​,我可以做我需要做的事情。

现在,我想要实现的是将 GetFile()控制器操作设为泛型,这样我就可以传递任何模型< / strong>,没有在方法签名中强烈键入模型类,就像我在上面的例子中所做的那样。

我知道我可以通过为每个模型覆盖一次GetFile()方法来实现这一点,但我想知道是否有更好的方法来做到这一点,尽可能保持DRY?

谢谢。

1 个答案:

答案 0 :(得分:1)

我建议使用基类:

public class BaseGetFileModel {}

各种模型将来自哪个。

[HttpPost]
public FileContentResult GetFile(BaseGetFileModel model)

编辑:

好的,如果你想要一个通用的方法,那么你可以这样做:

[HttpPost]
public FileContentResult GetFile()
{
    var someValue = Request["SomeValue"];
}

您不接受任何模型参数,只需从请求中选择POST&#39; d值即可。或者,如果您想避免对密钥名称进行硬编码,则可以遍历请求值集合。