C# MVC:我可以在类内控制器外使用ModelState吗?
我能在一节课内做这个吗C# MVC:我可以在类内控制器外使用ModelState吗?,c#,asp.net-mvc,C#,Asp.net Mvc,我能在一节课内做这个吗 ... using System.Web.Mvc; ... public static class aaa { public static test() { if (something) ModelState.AddModelError("", "test"); } } 内部控制器呼叫: 可能吗?我想控制控制器另一部分中类内部的代码。不,不能。您在控制器中引用的是它的属
...
using System.Web.Mvc;
...
public static class aaa
{
public static test() {
if (something) ModelState.AddModelError("", "test");
}
}
内部控制器呼叫:
可能吗?我想控制控制器另一部分中类内部的代码。不,不能。您在控制器中引用的是它的属性,而不是类。您仍然可以将其作为参数传递给被调用的方法。您可以这样传递模型状态:
public static void test(ModelStateDictionary ModelState)
{
if (something) ModelState.AddModelError("", "test");
}
并从控制器内部呼叫:
aaa.test(ModelState);
在ASP.NET Core 2中运行良好:
//Controller
if (MyValidator.SaveValidation(model, ModelState))
{
myManager.Update(model);
return Json(new
{
responseText = "Saved"
});
}
//Validator
public static class SaveDossierValidator
{
public static bool SaveValidation(MyModel model, ModelStateDictionary modelState)
{
if (model.property == null) {
modelState.AddModelError("property", "Error message");
}
return modelState.IsValid;
}
}
是的,但是应该在字典或引用之外,编译器不允许这样做,对吗?@David抱歉,我不明白你在说什么?抱歉,我按照你说的做了,但我必须将参数作为引用传递,因为它会在内部或外部参数发生变化,这样做,编译器给了我一个错误,不允许在其中的参数中放入ref或outobject@David您不需要通过
ref
传递它。此函数的返回类型是什么?我在字符串中添加了错误,我将在控制器中获得消息,之后,若消息为空,则无错误,否则我将在控制器内使用AddModelError添加。
//Controller
if (MyValidator.SaveValidation(model, ModelState))
{
myManager.Update(model);
return Json(new
{
responseText = "Saved"
});
}
//Validator
public static class SaveDossierValidator
{
public static bool SaveValidation(MyModel model, ModelStateDictionary modelState)
{
if (model.property == null) {
modelState.AddModelError("property", "Error message");
}
return modelState.IsValid;
}
}