我正在将MVC控制器重构为不同类中的较小块,并且我来到了一个部分,我返回一个“return StatusCode(500,”Some消息“)”项目。如何返回一个MVC控制器之外的StatusCode对象
据我所知,我似乎无法在控制器外进行此操作。
这是可能的,或者我必须找到一种替代方式返回响应,并将其转换为适当的类型回调用代码(MVC的控制器)?
我可以看到自己拥有的一个问题是MVC操作的原始类型是IActionResult,因此在操作中我一直在返回任何适当的响应,有时查看(,模型),有时Json()和其他时间StatusCode(< 500>,),即我的回应不一致。
对我来说,是否有一种自然的方式来取代并将此代码移动到另一个类中以使其工作,或者我将不得不手工制作自己的对象来表示我将以其他方式并在控制器中返回的内容,并且如果那么,建议什么?
总之,理想的我希望能够返回一个动作的结果,例如在一个类“返回视图(”我的视图名称”就是myModel)控制器之外。 我怎样才能做到这一点?
它感觉很脏,但也许包含一个包含状态码,消息,对象(作为模型),视图名称和一个名为ActionResultType的新枚举的单个对象,其值为“StatusCode”,“Json”和“View” ,所以我可以很容易地合理它映射回它的合适的自然状态,当控制器接收到响应。
也许我会有点远,而是应该只专注于获得逻辑的主要部分出的控制者,而不是试图在别的地方建立一个更充实的回应?
如果可能的话,我很想得到每个动作的结果约10行,但除非我能想出一个很好的方式返回从别的地方适当的响应,它可能是一个斗争。
您的控制器之外的逻辑不应该知道或关心HTTP错误代码,请将这些内容保留在您的MVC操作中。 – DavidG
所有这些都有一个基本类型的ActionResult,所以我不知道是什么问题。 –
你可以尝试使用“return InternalServerError(new Exception(”SOME CUSTOM MESSAGE“));” –