Search code examples
asp.net-mvcmvccontribspark-view-enginefluenthtml

Cannot use fluent html lambda expressions in Spark view


I'm attempting to use fluent html and the spark view engine in my asp.net mvc application. I've assinged the proper base class, added the assemblies, and when i do this.TextBox("MyProperty") it works fine. However I get the below exception when i attempt to use this.TextBox(m=>m.MyProperty). Any idea what can be causing this?

Exception:

Dynamic view compilation failed.
c:\Users\Midas\Documents\Visual Studio 2008    \Projects\ChurchMVC\ChurchMVC\Views\Poll\New.spark(6,31): error CS1660: Cannot convert     lambda expression to type 'string' because it is not a delegate type
c:\Users\Midas\Documents\Visual Studio 2008    \Projects\ChurchMVC\ChurchMVC\Views\Poll\New.spark(7,28): error CS1660: Cannot convert     lambda expression to type 'string' because it is not a delegate type

1 using MvcContrib.FluentHtml;
2 using System;
3 using System.Collections.Generic;
4 using System.Linq;
5 using System.Web.Mvc;
6 using System.Web.Mvc.Html;
7 using Microsoft.Web.Mvc;
8 using MvcContrib.FluentHtml.Elements;
9 
10 namespace ChurchMVC.Controllers
11 {
12 
13 [global::Spark.SparkViewAttribute(
14     TargetNamespace="ChurchMVC.Controllers",
15     Templates = new string[] {
16       "Poll\\New.spark",
17       "Layouts\\Application.spark",
18       "Layouts\\TwoColumn.spark",
19       "Layouts\\Base.spark"
20     })]
21 public class View6dda34d85cf14f8d8946e77056f25819 :     Spark.Web.Mvc.SparkView<ChurchMVC.Models.ViewModels.PollViewModel>
22 {
23 
24     public override System.Guid GeneratedViewId
25     { get { return new System.Guid("6dda34d85cf14f8d8946e77056f25819"); } }
26 
27     string BuildArticleBreadcumb(ChurchDAL.Section section)
28 #line 10 "C:\Users\Midas\Documents\Visual Studio 2008\Projects\ChurchMVC\ChurchMVC\Views\Shared\_global.spark"
29 {
30 #line hidden
31         using(OutputScope(new System.IO.StringWriter()))
32         {
33 #line default
34 #line 11 "C:\Users\Midas\Documents\Visual Studio 2008    \Projects\ChurchMVC\ChurchMVC\Views\Shared\_global.spark"
35     if (section == null)
36 #line default

Solution

  • If you really assigned the proper base class, then this exception usually means that you have invalid property in your lambda expression. Double-check it. You actually didn't show nor your spark view nor the code. But, as an example, if you have

    public string Name { get; set; }
    

    and use

    this.Hidden(x => x.Name1)
    

    you'll get this error (followed by another exception).