编译器错误信息:CS0135:“Model”与声明“System.Web.Mvc.WebViewPage<TModel>.Model”冲突。

11

我正在使用ASP.NET MVC 3。我创建了一个强类型视图,其中包含一个表单。在页面底部,我有一个ActionLink。

  @Html.ActionLink("Edit", "Edit", new { id = Model.UserId}) 

这将允许用户编辑信息。当我运行应用程序时,我会得到以下错误。

  Compiler Error Message: CS0135: 'Model' conflicts with the declaration
 'System.Web.Mvc.WebViewPage<TModel>.Model'

这可能是什么。

2个回答

29

我猜想在你的视图中,你使用了带有保留关键字Model的lambda表达式的强类型辅助器。例如:

@Html.TextBoxFor(Model => Model.SomeProperty)

应该是这样的:

@Html.TextBoxFor(x => x.SomeProperty)

或者任何其他名称。


Darin,我正在使用@Html.TextBoxFor(Model => Model.SomeProperty)@Html.TextBoxFor(Model => Model.SomeProperty2)@Html.TextBoxFor(Model => Model.SomeProperty3),一切都很好。 - Evan
2
@Evan,尝试将@Html.TextBoxFor(Model => Model.SomeProperty)替换为@Html.TextBoxFor(x => x.SomeProperty) - Darin Dimitrov
@DarinDimitrov,我也遇到了这个问题。很棒你通过查看异常而不是实际代码识别出了原因。对我来说,在我添加了一个Action并尝试传递routeValues之后,这个问题才开始出现,就像这样:@Html.Action("_EmployeeList", new { id = Model.Id})。 - R. Schreurs

4
我发现只需将大写字母M替换为小写字母m即可解决此问题。例如,从

更改为


@Html.TextBoxFor(Model => Model.SomeProperty)

to

@Html.TextBoxFor(model => model.SomeProperty)

也许这更加模糊,但如果你想保持事物与以前相似,它就不会有太大的改变。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接