Можем ли мы использовать атрибут Bind с методом Get action при передаче параметра в MVC? - PullRequest
0 голосов
/ 14 января 2019

У меня есть еще 2 ошибки с HPFortify наряду с основным вопросом, как указано ниже для приведенного ниже кода:
1. Недопустимые практики ASP.NET MVC: действие контроллера без проверки анти-подделки [Примечание: из-за атрибута Bind, возможно, запрашивается эта ошибка. Итак, я поместил ValidateAntiForgeryToken в код. Но он снова попросил изменить глагол на POST]
2. Плохая практика ASP.NET MVC: действие контроллера не ограничено POST
Это правильно или нужно что-то менять?

[AcceptVerbs(HttpVerbs.Get)]   
[ValidateAntiForgeryToken]    
public Actionresult Index([Bind(Include="Eid, Eage")]EmpModel objEmpModel)    
{   
return view(objEmpModel);    
} 

1 Ответ

0 голосов
/ 14 января 2019

Вы можете просто использовать [HttpPost] для работы со сложным объектом, подобным этому:

[HttpPost]   
[ValidateAntiForgeryToken]    
public Actionresult Index(EmpModel objEmpModel)    
{   
return view(objEmpModel);    
}

Или, если вы хотите, чтобы ваш код работал, используйте это:

[HttpGet]   
[ValidateAntiForgeryToken]    
public Actionresult Index([FromUri]EmpModel objEmpModel)    
{   
return view(objEmpModel);    
}  

Примечание: Для сложных типов, таких как классы, web-api пытается читать данные из тела, поскольку вы используете метод [HttpGet], поэтому атрибут [FromUri] переопределяет соглашение по умолчанию и считывает данные от Ури вместо тела. Дополнительная информация - https://docs.microsoft.com/en-us/aspnet/web-api/overview/formats-and-model-binding/parameter-binding-in-aspnet-web-api

...