11

I am using ASP.NET MVC 3. I have created a strongly typed view that has a form. At the bottom of the page I have and ActionLink

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

this will allow the user to edit the information. When I run the app I get the following error.

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

What could this be.

psoares
  • 4,733
  • 7
  • 41
  • 55
Evan
  • 111
  • 1
  • 3

2 Answers2

29

I guess somewhere in your view you have used a strongly typed helper with a lambda expression using the reserved Model keyword. Like for example:

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

it should be:

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

or any other name.

Darin Dimitrov
  • 1,023,142
  • 271
  • 3,287
  • 2,928
  • Darin, I am using @Html.TextBoxFor(Model => Model.SomeProperty) @Html.TextBoxFor(Model => Model.SomeProperty2) @Html.TextBoxFor(Model => Model.SomeProperty3) and everything is fine. – Evan Jun 01 '11 at 16:25
  • 2
    @Evan, well, try replacing `@Html.TextBoxFor(Model => Model.SomeProperty)` with `@Html.TextBoxFor(x => x.SomeProperty)`. – Darin Dimitrov Jun 01 '11 at 18:00
  • @DarinDimitrov, I had this issue as well. Brilliant that you recognized the cause by looking at the exception and without the actual code. For me, this issue only started occurring after I added an Action in which I tried to pass routeValues like this: @Html.Action("_EmployeeList", new { id = Model.Id}) – R. Schreurs Apr 08 '13 at 08:29
4

I found simply replacing the capital M with a small m solved this. i.e. from

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

to

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

Perhaps it is more ambiguous, but it is less of a change if you want to keep things similar to the way they were.

ChrisFox
  • 346
  • 4
  • 11