C# 从控制器在MVC强类型视图上强制执行所需参数?
我有一个控制器,我想把一些数据传递给一个视图 视图的强类型如下所示:C# 从控制器在MVC强类型视图上强制执行所需参数?,c#,asp.net-mvc,C#,Asp.net Mvc,我有一个控制器,我想把一些数据传递给一个视图 视图的强类型如下所示: System.Web.Mvc.ViewPage<SomeObject> 我希望它强制我需要传入“someObject” 我希望下面的失败而不编译: View("SomeAction"); 无论发生什么情况,预期的对象必须始终传递给视图 这是可能的还是我完全偏离了基准?我只需要为这种情况编写一个测试,而不必为其他情况费心: var actual = controllerUnderTest.Action() as
System.Web.Mvc.ViewPage<SomeObject>
我希望它强制我需要传入“someObject”
我希望下面的失败而不编译:
View("SomeAction");
无论发生什么情况,预期的对象必须始终传递给视图
这是可能的还是我完全偏离了基准?我只需要为这种情况编写一个测试,而不必为其他情况费心:
var actual = controllerUnderTest.Action() as ViewResult;
Assert.IsNotNull(actual.ViewData.Model);
Assert.IsInstanceOfType(actual.ViewData.Model, typeof(SomeObject));
我更希望编译器拿起它,甚至可能是intellisense来帮助其他人,而不是等待测试用例运行来发现错误。这就是我试图从这个问题中得到的要点。只要您的控制器是从System.Web.Mvc.controller派生的,就没有任何东西(在编译时)可以阻止开发人员调用controller.View(“abc”)方法而不传递模型。您可以改为让操作返回CustomViewResult而不是ActionResult。此CustomViewResult可以从ViewResult派生,并在您定义的公共构造函数中“强制”模型。
var actual = controllerUnderTest.Action() as ViewResult;
Assert.IsNotNull(actual.ViewData.Model);
Assert.IsInstanceOfType(actual.ViewData.Model, typeof(SomeObject));