Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么方法“DropDownListFor”没有重载?_C#_Asp.net_Asp.net Mvc_View_Html.dropdownlistfor - Fatal编程技术网

C# 为什么方法“DropDownListFor”没有重载?

C# 为什么方法“DropDownListFor”没有重载?,c#,asp.net,asp.net-mvc,view,html.dropdownlistfor,C#,Asp.net,Asp.net Mvc,View,Html.dropdownlistfor,我正在学习MVC并编写我自己的简单应用程序。这是一个计算器应用程序。基本上,我想让用户输入两个数字,然后使用下拉菜单来决定他们将对这些数字执行什么操作。这与我以前一直在做的事情不同。下面的代码除了我在博客上找到的做下拉操作的提示之外,完全是我自己的 问题 我很惊讶一个下拉菜单最终会变得多么平凡。所以我发现这很好。我将此代码修改为我的解决方案,并得到以下错误: 描述:编译服务此请求所需的资源时出错。请查看以下特定错误详细信息,并适当修改源代码 Compiler Error Message: CS1

我正在学习MVC并编写我自己的简单应用程序。这是一个计算器应用程序。基本上,我想让用户输入两个数字,然后使用下拉菜单来决定他们将对这些数字执行什么操作。这与我以前一直在做的事情不同。下面的代码除了我在博客上找到的做下拉操作的提示之外,完全是我自己的

问题 我很惊讶一个下拉菜单最终会变得多么平凡。所以我发现这很好。我将此代码修改为我的解决方案,并得到以下错误:

描述:编译服务此请求所需的资源时出错。请查看以下特定错误详细信息,并适当修改源代码

Compiler Error Message: CS1501: No overload for method 'DropDownListFor' takes 1 arguments

Source Error:


Line 18:         <p>First Number : @Html.TextBoxFor(x => x.Number1) </p>
Line 19:         <p>Second Number: @Html.TextBoxFor(x => x.Number2)</p>
Line 20:         <p>Select Operand: @Html.DropDownListFor(x=>x.OperationItems)</p>
Line 21:         <input type="submit" value="Enter" />
Line 22:     }
看法

尝试

我认为重载方法是一条重要线索。因此,我怀疑我的方法操作项在我的模型中是混乱的。也就是说,我不确定它会是什么? .不过我觉得我的模型不适合那个问题。
请原谅任何愚蠢的错误。我想我很接近了?Webdev现在让我头晕目眩。

这真的很简单。错误告诉你问题:

No overload for method 'DropDownListFor' takes 1 arguments
                                         ^^^^^^^^^^^^^^^^
以下是下拉列表:

正如您所看到的,这些都不接受1个参数。最简单的版本接受3个参数,尽管第一个参数是隐藏的,因为它被用作扩展方法的一部分,所以您在实际代码中只看到2个参数

dropdownlist至少需要两件事,一个变量来保存所选值,一个项目列表来选择。在您的代码中,您没有变量来保存所选项目,因此您如何知道用户选择了什么项目


你会注意到在你链接到的问题中,答案是有两个参数。

你真的看过你的代码了吗?Razor必须突出显示DropDownListFor的声明为编译错误,因为这个扩展方法至少包含两个参数,要从模型关联的expression属性和IEnumerable对象,将用于填充下拉项。这应该可以

@Html.DropDownListFor(x=>x.OperationItems, Model.OperationItems)

有关详细信息,请查看文档中的

检查将属性添加到模型公共字符串运算符{get;set;}并使用@Html.DropDownListForx=>x.Operator,Model。OperationItems@StephenMuecke正是这一点,然后我重新阅读了DropDownList文档。所以我现在有了一个id供我选择。出现了一个新问题。我看到了四个名为“MVCalculatorDemo.Models.CalculatorOperations”的对象,而不是Add、Substract等。这是因为我写Selec的方式吗tList在我的模型中?我将其重写为SelectListops,Name,但有相同的错误。我将继续阅读MSDN文档。没关系,我找到了它。模型需要ID和操作名称,以便可以显示操作项。droplist需要做大量工作。注意:什么是CalculatorOperations?如果它似乎只有一个属性文本,为什么需要它。您的代码可以减少到一行或两行。埃里克,谢谢。我本以为我检查了此项,但将自己与SelectListItem混淆了。这就是为什么我只使用了一个参数。是的,我一直在查看我的代码。我对此不熟悉,经过几个小时的阅读和编码,我的大脑即将爆炸。这对我帮助很大,尽管我立即遇到了一个问题另一个问题。这帮助我解决了整个问题。现在进入下一部分,即使用我的计算结果创建自定义视图:
@model MVCalculatorDemo.Models.CalculatorData

@{
    Layout = null; 
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>RsvpForm</title>
</head>
<h2>Calculator</h2>
<body>
    @using (Html.BeginForm())
    {
        <p>First Number : @Html.TextBoxFor(x => x.Number1) </p>
        <p>Second Number: @Html.TextBoxFor(x => x.Number2)</p>
        <p>Select Operand: @Html.DropDownListFor(x=>x.OperationItems)</p>
        <input type="submit" value="Enter" />
    }
</body>
</html>
No overload for method 'DropDownListFor' takes 1 arguments
                                         ^^^^^^^^^^^^^^^^
@Html.DropDownListFor(x=>x.OperationItems, Model.OperationItems)