参数名action和关键字action冲突
时间: 2023-09-29 16:08:04 浏览: 54
如果在ASP.NET MVC中使用了参数名为`action`,那么会出现参数名和关键字`action`冲突的问题。这时候可以使用以下两种方式解决:
1. 在Action方法中使用特性指定参数名
在Action方法中,可以通过`ActionName`特性指定参数名,例如:
```csharp
public ActionResult MyAction([ActionName("myAction")] string action)
{
// Do something
}
```
这样就可以在URL中使用`myAction`参数名来传递参数,而不会和关键字`action`冲突了。
2. 使用自定义Model绑定器
可以使用自定义的Model绑定器来处理参数名和关键字冲突的问题。例如,可以定义一个`MyActionParameter`类,然后在自定义Model绑定器中判断参数名是否为`action`,如果是则将其替换为自定义的参数名:
```csharp
public class MyActionParameter
{
public string MyAction { get; set; }
}
public class MyActionParameterBinder : IModelBinder
{
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var valueProviderResult = bindingContext.ValueProvider.GetValue("action");
if (valueProviderResult != null)
{
var myAction = valueProviderResult.AttemptedValue;
return new MyActionParameter { MyAction = myAction };
}
else
{
return null;
}
}
}
```
然后在Controller中,可以将参数类型改为`MyActionParameter`,并在参数前加上`ModelBinder`特性指定使用自定义的Model绑定器:
```csharp
public ActionResult MyAction([ModelBinder(typeof(MyActionParameterBinder))] MyActionParameter parameter)
{
var myAction = parameter.MyAction;
// Do something
}
```
这样就可以在URL中使用`action`参数名来传递参数,而不会和关键字`action`冲突了。
相关推荐
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)