在 Asp.Net 核心 MVC 视图中找不到类型或命名空间
Type or namespace cannot be found in Asp.Net Core MVC view
我正在 Asp.Net Core Mvc 和 运行 上制作计算器时遇到问题。
我有 CalcModel
和 CalcController
。还有 IndexCalculator
视图。
public class CalcModel
{
public decimal FirstNumber { get; set; }
public decimal SecondNumber { get; set; }
public decimal Result { get; set; }
public CalculationMethod calculationMethod { get; set; }
public enum CalculationMethod
{
[Display(Name = "+")]
Addition,
[Display(Name = "-")]
Subtraction,
[Display(Name = "*")]
Multiplication,
[Display(Name = "/")]
Division
}
}
我的Controller里面只有一个加法:
public class CalcController : Controller
{
public IActionResult IndexCalculator()
{
return View(new CalcModel());
}
[HttpPost]
public async Task<IActionResult> IndexCalculator(CalcModel model)
{
ModelState.Clear();
switch (model.calculationMethod)
{
case CalculationMethod.Addition:
model.Result = model.FirstNumber + model.SecondNumber;
break;
}
return View(model);
}
}
还有我的妻子:
@using (Html.BeginForm("IndexCalculator", "CalcModel", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
@Html.LabelFor(m => m.FirstNumber) @Html.TextBoxFor(x => x.FirstNumber)<br />
@Html.LabelFor(m => m.SecondNumber) @Html.TextBoxFor(x => x.SecondNumber)<br />
@Html.LabelFor(m => m.Result) @Html.TextBoxFor(x => x.Result)<br />
@Html.DropDownListFor(m => m.calculationMethod, (Html.GetEnumSelectList(typeof(CalculationMethod))))
<input type="submit" />
我得到了错误
Could not find the type or namespace name CalculationMethod
在这一行中:
@Html.DropDownListFor(m => m.calculationMethod, (Html.GetEnumSelectList(typeof(CalculationMethod))))
我的错误是什么?
作为 Mat J,您可以通过添加 CalcModel
前缀来访问 CalculatorMethod
枚举,因为您已经在 class 中声明了枚举并且它是嵌套的CalcModel
.
的类型
Html.GetEnumSelectList<CalcModel.CalculatorMethod>()
所有的功劳归于Mat J。(我一开始没有注意到类型封装部分)。
如果他把他的评论转化为答案,我会删除我的
我正在 Asp.Net Core Mvc 和 运行 上制作计算器时遇到问题。
我有 CalcModel
和 CalcController
。还有 IndexCalculator
视图。
public class CalcModel
{
public decimal FirstNumber { get; set; }
public decimal SecondNumber { get; set; }
public decimal Result { get; set; }
public CalculationMethod calculationMethod { get; set; }
public enum CalculationMethod
{
[Display(Name = "+")]
Addition,
[Display(Name = "-")]
Subtraction,
[Display(Name = "*")]
Multiplication,
[Display(Name = "/")]
Division
}
}
我的Controller里面只有一个加法:
public class CalcController : Controller
{
public IActionResult IndexCalculator()
{
return View(new CalcModel());
}
[HttpPost]
public async Task<IActionResult> IndexCalculator(CalcModel model)
{
ModelState.Clear();
switch (model.calculationMethod)
{
case CalculationMethod.Addition:
model.Result = model.FirstNumber + model.SecondNumber;
break;
}
return View(model);
}
}
还有我的妻子:
@using (Html.BeginForm("IndexCalculator", "CalcModel", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
@Html.LabelFor(m => m.FirstNumber) @Html.TextBoxFor(x => x.FirstNumber)<br />
@Html.LabelFor(m => m.SecondNumber) @Html.TextBoxFor(x => x.SecondNumber)<br />
@Html.LabelFor(m => m.Result) @Html.TextBoxFor(x => x.Result)<br />
@Html.DropDownListFor(m => m.calculationMethod, (Html.GetEnumSelectList(typeof(CalculationMethod))))
<input type="submit" />
我得到了错误
Could not find the type or namespace name CalculationMethod
在这一行中:
@Html.DropDownListFor(m => m.calculationMethod, (Html.GetEnumSelectList(typeof(CalculationMethod))))
我的错误是什么?
作为 Mat J,您可以通过添加 CalcModel
前缀来访问 CalculatorMethod
枚举,因为您已经在 class 中声明了枚举并且它是嵌套的CalcModel
.
Html.GetEnumSelectList<CalcModel.CalculatorMethod>()
所有的功劳归于Mat J。(我一开始没有注意到类型封装部分)。
如果他把他的评论转化为答案,我会删除我的