नोट
इस पृष्ठ तक पहुंच के लिए प्राधिकरण की आवश्यकता होती है। आप साइन इन करने या निर्देशिकाएँ बदलने का प्रयास कर सकते हैं।
इस पृष्ठ तक पहुंच के लिए प्राधिकरण की आवश्यकता होती है। आप निर्देशिकाएँ बदलने का प्रयास कर सकते हैं।
| Value | |
|---|---|
| Rule ID | MVC1004 |
| Fix is breaking or non-breaking | Breaking |
Cause
A model bound parameter has the same name as one of its properties.
Rule description
Model binding a complex parameter with a property that has the same name may result in unexpected binding behavior. Consider renaming the parameter, or using a binding attribute to specify a different name.
Consider the following code:
public class HomeController : Controller
{
public IActionResult Get(SearchModel search)
{
...
}
}
public class SearcModel
{
public string Search { get; set; }
}
In this model, the parameter and its property are both named Search, which results in model binding attempting to bind the property as search.Search. Naming a parameter and its property the same prevents binding to a value without a prefix such as a query that looks like ?search=MySearchTerm.
How to fix violations
- Rename the parameter if its prefix is not used during binding:
public IActionResult Get(SearchModel model)
{
...
}
Renaming a parameter on a public type could be considered a breaking change since it changes a library's public API surface.
- If this is problematic, consider using a model binding attribute such as
Bindto specify the model binding prefix:
public IActionResult Get([Bind(Prefix = "")] SearchModel search)
{
...
}
When to suppress warnings
Warnings can be suppressed if you intend to use the parameter name as a prefix during model binding.
ASP.NET Core