HP强化扫描为我的控制器中的大多数操作方法提供了批量分配:不安全的Binder配置(API滥用,结构)的消息。以下是操作方法的示例。
<HttpPost>
Function Edit(model as GridViewModel)
Dim manager as new Managers
manager.Edit(model.id, model.name, model.desc,model.class)
Return Nothing
End Function
当我尝试使用以下方法时,错误消失了。
<HttpPost>
Function Edit(id as integer?,name as string, desc as string, class as string)
Dim manager as new Managers
manager.Edit(id, name, desc,class)
Return Nothing
End Function
但上面的代码似乎是MVC不良做法。 请建议一种方法来克服这个问题。
答案 0 :(得分:0)
在C#中,您可以指定允许模型中的哪些项目。例如,您的例程在c#中将如下所示:
[HttpPost]
public ActionResult Edit([Bind(Include = "id,name,desc,class")] GridviewModel model)
{
Managers manager = new Managers();
manager.Edit(model.id, model.name, model.desc, model.class);
return RedirectToAction("Edit", "[Controller]");
}
这至少应该为你提供一个研究你所写语言的跳跃点,看看他们是否允许同样的行动。
除了能够包含特定参数(白名单)之外,您还可以使用[Bind(Exclude =“”)]
简单地排除参数