解决歧义

2024-01-01

我有一个带有 3 个创建方法重载的控制器:

public ActionResult Create() {}
public ActionResult Create(string Skill, int ProductId) {}
public ActionResult Create(Skill Skill, Component Comp) {}

在我的一个观点中,我想创建这个东西,所以我这样称呼它:

<div id="X">
@Html.Action("Create")
</div>

但我收到错误:

{“当前对控制器类型的操作‘创建’的请求 “XController”在以下操作方法之间不明确: System.Web.Mvc.ActionResult Create() 类型 X.Web.Controllers.XController System.Web.Mvc.ActionResult 在类型 X.Web.Controllers.XController 上创建(System.String, Int32) System.Web.Mvc.ActionResult 创建(X.Web.Models.Skill, X.Web.Models.Component) 类型 X.Web.Controllers.XController"}

但自从@html.Action()如果不传递任何参数,则应使用第一个重载。这对我来说似乎并不含糊(这只意味着我不像 C# 编译器那样思考)。

谁能指出我的方法的错误?


默认情况下,ASP.NET MVC 不支持重载方法。您必须使用不同的操作或可选参数。例如:

public ActionResult Create() {}
public ActionResult Create(string Skill, int ProductId) {}
public ActionResult Create(Skill Skill, Component Comp) {}

将更改为:

// [HttpGet] by default
public ActionResult Create() {}

[HttpPost]
public ActionResult Create(Skill skill, Component comp, string strSkill, int? productId) {
    if(skill == null && comp == null 
        && !string.IsNullOrWhiteSpace(strSkill) && productId.HasValue)
        // do something...
    else if(skill != null && comp != null
        && string.IsNullOrWhiteSpace(strSkill) && !productId.HasValue)
        // do something else
    else
        // do the default action
}

OR:

// [HttpGet] by default
public ActionResult Create() {}

[HttpPost]
public ActionResult Create(string Skill, int ProductId) {}

[HttpPost]
public ActionResult CreateAnother(Skill Skill, Component Comp) {}

OR:

public ActionResult Create() {}
[ActionName("CreateById")]
public ActionResult Create(string Skill, int ProductId) {}
[ActionName("CreateByObj")]
public ActionResult Create(Skill Skill, Component Comp) {}

另请参阅此问答 https://stackoverflow.com/questions/7536119/mvc3-routing-with-overloaded-query-parameters/7536515#7536515

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

解决歧义 的相关文章

随机推荐

  • React JS 多个提交按钮react-hook-form

    我使用react hook form进行表单验证和提交 使用单个提交类型按钮一切正常 现在我需要三个按钮 保存草稿 预览页面中的数据值 和 提交审批 我可以选择退出模式选择单选按钮 但想要具有三个按钮提交功能 这需要表单数据 为输入字段添加
  • Blackberry 10:Android 运行时和 JNI

    BlackBerry 10 Android Runtime 是否支持 JNI 我想在我的 android 应用程序中执行本机 c 代码 我想将其部署在黑莓 10 操作系统上 在我的 android 应用程序中 我使用 JNI 来处理从本机
  • 带引导程序的幻灯片放映

    我尝试用引导程序制作幻灯片 以便您滑动浏览图像 但图像没有显示 仅显示下一个和上一个按钮 我正在使用 asp net mvc5 这是jquery document ready function myModal myModal row img
  • 对 PixelFormat 感到困惑

    我很困惑像素格式 http developer android com reference android graphics PixelFormat html在安卓上 我的设备是摩托罗拉 Defy 我有两个问题 在安卓2 3上getWind
  • 使用 parquet 文件元数据创建 Hive 表

    我编写了一个 DataFrame 作为镶木地板文件 而且 我想使用镶木地板中的元数据使用 Hive 读取文件 写入 parquet write 的输出 common metadata part r 00000 0def6ca1 0f54 4
  • 连接由 V-USB 库供电的 libUSB 设备用于 AVR

    我写了一个简单的程序 基于下列的 http codeandlife com 2012 01 22 avr attiny usb tutorial part 1 教程 通过 USB 端口将数据从 AVR 芯片 Attiny 2313 发送到计
  • Node.js 多进程日志记录

    我现在正在做一个基于集群的node js项目 我陷入了日志记录的困境 经过一番研究后 我找到了一个解决方案 就这个 我不知道这是否是一个好主意 想法是这样的 只有master进程可以写入日志文件 如果当前进程是worker 那么它会向mas
  • LINQ 标识函数

    只是关于 LINQ 语法的一点小问题 我正在压平一个IEnumerable
  • PHP OCI、Oracle 和默认数字格式

    当我使用 PHP OCI 从 Oracle 数据库执行提取时 小于 1 的数字显示为 XXXXXX e g 249999 有没有办法将其设置为0 XXXXXX或任何其他格式 无需修改每个要使用的查询to char 明确地 也许通过一些会话参
  • asp .net 2.0 上的最大查询字符串长度

    我正在研究 ASP NET 版本 2 0 和 IIS 6 我通过调用其 URL 并向其传递查询字符串来从主页调用弹出的 aspx 页面 对于特定情况 我的查询字符串的长度超过 2000 个字符 因此 弹出屏幕第一次打开时效果很好 但每当该弹
  • 当有超过 n 个查询时,如何记录“show processlist”?

    我们的 mysql 进程有时会积压并且进程开始排队 我想通过在缓慢的时间记录进程列表来调试发生这种情况的时间和原因 我想跑show full processlist 通过 cron 作业并将输出保存到文本文件 如果有多个 50返回行 你能为
  • UICollectionView - 图像是随机设置的

    我在我的应用程序中使用collectionView 我正在 didSelect 委托中为单元格背景视图设置图像 但是当我选择一个单元格索引路径时 图像将设置为 3 个单元格索引路径 当我滚动 collectionView 时 图像会随机更改
  • JavaFX 2.x:将鼠标单击坐标转换为 XYChart 轴值

    在 JavaFX 2 x 中 我使用 XYChart 并且希望当鼠标在图表上移动时显示图表的 X Y 轴坐标值 我在图表上设置了一个事件处理程序来处理 setOnMouseMoved 事件 但是 我不确定如何将 MouseEvent 的 g
  • MIPS汇编中$是什么意思?

    什么是 在 MIPS 汇编语言中是什么意思 举个例子 Add 28 R4 R3 表达式中的美元符号是什么 在汇编程序中 符号 通常表示两种不同的含义 数字前缀表示该数字以十六进制书写 本身是一个数值表达式 其计算结果为 当前位置 即组装下一
  • 如何使用 boto3 客户端删除仍然可用的 HIT

    我有一些已发布的 HIT 可供工作人员使用 现在我想删除它们 尽管它们还没有被工作人员完成 根据此文档 这是不可能的 https boto3 amazonaws com v1 documentation api latest referen
  • React 功能组件:如何从外部访问变量 useEffect()

    我已经简化了下面的问题 我正在使用useEffect确保 dom 在选择项目之前已渲染 这非常有效 并且在尝试获取这些元素之前不需要超时 但是如果我想在另一个组件中使用这些值 如何访问它们 The printAll 函数找不到变量 impo
  • Java 泛型方法签名中的类型不匹配

    我有一个Executor调用接口实例的类IService
  • 使用 Android 的 BROTHER SDK 通过 WIFI 打印时出现 ERROR_WRONG_LABEL

    我有 Brother QL 710W 标签打印机 我尝试使用 Brother 的 SDK 通过 WIFI 进行打印 但每次都会收到 ERROR WRONG LABEL 错误 我努力了 尝试使用 Android Brother Sdk 进行标
  • 来自:“1 小时前”,至:timedelta + 准确度

    有没有 逆转人性化 时代的功能 例如 给定 字符串 1分钟前 7小时前 5天前 2个月前 可以返回 对伪代码表示歉意 datetime now 时间增量 1 分钟 精度 60 秒 datetime now 时间增量 7 小时 精度 1 小时
  • 解决歧义

    我有一个带有 3 个创建方法重载的控制器 public ActionResult Create public ActionResult Create string Skill int ProductId public ActionResul