这是路由问题吗?
Is this a routing issue?
我开发了一个 HTML 表单向导,它可以帮助创建一个对象来组成要发送到服务器的数据。
我有一个控制器,有两个操作方法如下:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult SaveItem( TypeOneItem model, int customerID ) {
和
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult SaveItem( TypeTwoItem model, int customerID ) {
TypeOneItem 和 TypeTwoItem 都是 BaseItem 的子class。 class 是这样定义的
public class BaseItem
{
public int ItemID { get; set; }
public string Name { get; set; }
}
public class TypeOneItem : BaseItem
{
public int Property1 { get; set; }
public string Property2 { get; set; }
}
public class TypeTwoItem : BaseItem
{
public string Property3 { get; set; }
public int Property4 { get; set; }
public double Property5 { get; set; }
}
但是,即使我发布了正确的数据以绑定到两个具体 classes 之一,我也会收到错误消息
“The current request for action 'SaveItem' on controller type 'ManageController' is ambiguous between the following action methods: System.Web.Mvc.ActionResult SaveItem(TypeOneItem, Int32) System.Web.Mvc.ActionResult SaveItem(TypeTwoItem, Int32)
”
为什么会这样?我不想更改服务器操作名称并在 UI 向导上硬编码差异。还有其他方法可以解决这个问题吗?
MVC 支持基于属性的方法重载,但它不会仅基于不同的方法签名来实现。
你可以看看参考
ASP.NET MVC ambiguous action methods
我开发了一个 HTML 表单向导,它可以帮助创建一个对象来组成要发送到服务器的数据。
我有一个控制器,有两个操作方法如下:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult SaveItem( TypeOneItem model, int customerID ) {
和
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult SaveItem( TypeTwoItem model, int customerID ) {
TypeOneItem 和 TypeTwoItem 都是 BaseItem 的子class。 class 是这样定义的
public class BaseItem
{
public int ItemID { get; set; }
public string Name { get; set; }
}
public class TypeOneItem : BaseItem
{
public int Property1 { get; set; }
public string Property2 { get; set; }
}
public class TypeTwoItem : BaseItem
{
public string Property3 { get; set; }
public int Property4 { get; set; }
public double Property5 { get; set; }
}
但是,即使我发布了正确的数据以绑定到两个具体 classes 之一,我也会收到错误消息
“The current request for action 'SaveItem' on controller type 'ManageController' is ambiguous between the following action methods: System.Web.Mvc.ActionResult SaveItem(TypeOneItem, Int32) System.Web.Mvc.ActionResult SaveItem(TypeTwoItem, Int32)
”
为什么会这样?我不想更改服务器操作名称并在 UI 向导上硬编码差异。还有其他方法可以解决这个问题吗?
MVC 支持基于属性的方法重载,但它不会仅基于不同的方法签名来实现。 你可以看看参考 ASP.NET MVC ambiguous action methods