我有这个控制器
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?
谢谢。
答案 0 :(得分:1)
我建议使用基类:
public class BaseGetFileModel {}
各种模型将来自哪个。
[HttpPost]
public FileContentResult GetFile(BaseGetFileModel model)
编辑:
好的,如果你想要一个通用的方法,那么你可以这样做:
[HttpPost]
public FileContentResult GetFile()
{
var someValue = Request["SomeValue"];
}
您不接受任何模型参数,只需从请求中选择POST&#39; d值即可。或者,如果您想避免对密钥名称进行硬编码,则可以遍历请求值集合。