C# MVC5值不能为null或空。参数名称:name

C# MVC5值不能为null或空。参数名称:name,c#,asp.net-mvc,razor,C#,Asp.net Mvc,Razor,源错误:第22行:@Html.TextBoxFor(model=> model.DailyCurrencyRates\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuubuyingCurrency,新{@id=“test”,@class =“表单控件”}) 我在这个问题上纠缠了好几天,无法回避这个错误。我只想呈现一个包含父类项的局部视图。下面是我的代码:如果需要,请询问更多信息 控制器 public ActionResult AddRecord(int index) { retur

源错误:第22行:@Html.TextBoxFor(model=> model.DailyCurrencyRates\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuubuyingCurrency,新{@id=“test”,@class =“表单控件”})

我在这个问题上纠缠了好几天,无法回避这个错误。我只想呈现一个包含父类项的局部视图。下面是我的代码:如果需要,请询问更多信息

控制器

public ActionResult AddRecord(int index)
{
  return PartialView("_AddItem", new ForexItem { Index = index});
}
父视图

@foreach (ForexItem item in Model.ForexItems)
{
    Html.RenderPartial("_AddItem", item);
}
局部视图

@model F.Models.Entities.ForexItem

@Html.TextBoxFor(model => model.DailyCurrencyRates___BuyingCurrency, new { @id = "test", @class = "form-control" })
模型


这可能是一个输入错误,但在我看来,您应该将
Model.ForexItems
更改为
Model.ForexItem
-否。基于您提交的代码。 …或者可能只是使用
模型
,因为您已经将ForexItem作为该模型输入了

父视图

@foreach (ForexItem item in Model)
{
    Html.RenderPartial("_AddItem", item);
}

当我将模型属性名称中的下划线数从1增加到2时,我得到了相同的模糊错误。请注意,LabelFor Helper在TextBoxFor Helper之前没有发生错误,而只是在TextBoxFor Helper中发生错误,与您得到的错误相同。(我注意到您的财产名称(“DailyCurrencyRates\uuuuuuuuuuu BuyingCurrency”)有3个下划线。)当我从财产名称中删除额外的下划线时,它就消失了。就好像有了额外的下划线,Razor找不到属性名,所以它只搜索了(通用)“name”,而它也找不到它。

你能分享完整的错误吗,因为我在代码中没有看到任何问题。@AnupamSingh完整的错误行22:异常详细信息:System.ArgumentException:值不能为null或空。参数名称:name ArgumentException:值不能为null或空。参数名称:name]System.Web.Mvc.Html.InputExtensions.InputHelper(HtmlHelper、InputType InputType、ModelMetadata元数据、字符串名称、对象值、布尔useViewData、布尔isChecked、布尔setId、布尔isExplicitValue、字符串格式、IDictionary
2 htmlAttributes)+1081 System.Web.Mvc.Html.InputExtensions.TextBoxFor(HtmlHelper
1 HtmlHelper,Expression`1 Expression,String format,尝试在第行放置断点:Html.TextBoxFor(model=>model.DailyCurrencyRates\uuuuuuuuuuuuuu BuyingCurrency,new{id=“test”,class=“form control”})并查看空值。设置断点没有帮助;所有模型道具都已初始化。似乎在for循环内的父视图中,我已尝试使用Html.partial和Html.Render操作,但仍然存在相同的错误。使用Html.RenderPartial的方式是正确的OMG,感谢您发布此…相同的事情-fi中带有双下划线的问题eld名称(从SalesForce命名模型继承而来)。更改视图使用的模型以使用单个下划线修复了此问题。请注意,在将MVC库(NuGet软件包)从针对.NET 4.5.2的v3.2.3升级到针对.NET 4.6.2的v3.2.6之后,出现了这种情况。此外,Microsoft.NET.Compiler也从v3.1.1升级到了v3.2.0
@foreach (ForexItem item in Model)
{
    Html.RenderPartial("_AddItem", item);
}