C# HiddenInput属性导致HiddenInput.cshtml中出现运行时错误 更新

C# HiddenInput属性导致HiddenInput.cshtml中出现运行时错误 更新,c#,asp.net-mvc,linq,C#,Asp.net Mvc,Linq,所以,我一直在看错误的文件。我的项目有两个HiddenInput.cshtml文件,一个在displayTemplate文件夹中,另一个在EditorTemplates中。我的大脑没有联系,我在看两个不同的文件夹 因此,在我的ViewModel中将hiddenInput属性添加到属性时,这似乎是一个奇怪的错误 我猜原因是因为我在3个独立的项目中有ViewModels、Controller和Models。但是,在调试此问题时,我确保在这三个文件中都引用了System.Data.Linq c:\p

所以,我一直在看错误的文件。我的项目有两个HiddenInput.cshtml文件,一个在displayTemplate文件夹中,另一个在EditorTemplates中。我的大脑没有联系,我在看两个不同的文件夹


因此,在我的ViewModel中将hiddenInput属性添加到属性时,这似乎是一个奇怪的错误

我猜原因是因为我在3个独立的项目中有ViewModels、Controller和Models。但是,在调试此问题时,我确保在这三个文件中都引用了System.Data.Linq

c:\proj\Adirondack.search\Views\Shared\EditorTemplates\HiddenInput.cshtml(9): 错误CS0234:中不存在类型或命名空间名称“Linq” 命名空间“System.Data”(是否缺少程序集引用?)

视图模型
公共类基本搜索视图模型
{
公共基础搜索视图模型()
{
SalesFrom=新日期时间(1974,1,1);
SalesTo=DateTime.Today;
}
[显示(Name=“Owner”,ShortName=“Owner”,Prompt=“输入所有者”),数据类型(DataType.Text)]
公共字符串所有者名称{get;set;}
[显示(Name=“Account Number”,ShortName=“Strap”,Prompt=“输入账号”),数据类型(DataType.Text)]
公共字符串{get;set;}
[显示(Name=“Address”、ShortName=“Addr.”、提示符=“输入完整地址”)、数据类型(DataType.Text)]
公共字符串地址{get;set;}
//公共bool HasPool{get;set;}
公共字符串位置{get;set;}
公共字符串ZipCode{get;set;}
公共布尔池{get;set;}
公营网球{get;set;}
公共布尔Dock{get;set;}
公共布尔海堤{get;set;}
[显示(Name=“销售来源”)]
[范围(日期时间类型),“1974年1月1日”,“2050年12月31日”)]
public DateTime SalesFrom{get;set;}
[显示(Name=“销售对象”)]
[范围(日期时间类型),“1974年1月1日”,“2050年12月31日”)]
public DateTime SalesTo{get;set;}
public int?SaleAmountFrom{get;set;}
public int?SaleAmountTo{get;set;}
公共布尔VacantLand{get;set;}
[脚手架立柱(假)]
公共页面列表搜索结果{get;set;}
[HiddenInput]
公共int?第{get;set;}页
}
Search.cshtml
@使用Search.Helpers;
@使用Search.Components.Html.ViewModels;
@使用PagedList.Mvc;
@模型基础搜索视图模型
@{
ViewBag.Title=“搜索”;
}
@ActionLink(“高级”、“高级搜索”)
@ActionLink(“有形”、“搜索”、“有形”)
@使用(Html.BeginForm(“搜索”、“包裹”、FormMethod.Get、new{id=“searchForm”}))
{
@Html.ValidationMessageFor(x=>x)
@EditorFor(m=>m)
结果
显示找到的@ViewData[“count”]结果的第一个@Model.SearchResults.TotalItemCount
皮带
位置
财产使用
@foreach(Model.SearchResults中的var项)
{
@DisplayFor(x=>item.strip)
@DisplayFor(modelItem=>item.SITUS)
@DisplayFor(modelItem=>item.Subsection\u PROPERTY\u USE)
@ActionLink(“显示详细信息”,“详细信息”,新的{id=item.STRAP})
@foreach(item.OWNERS.Take(2.OrderBy)(x=>x.LN\u NUM)中的var所有者)
{
@所有者名称
} } @HttpUtility.ParseQueryString(Model.AsQueryString()) @PagedListPager(Model.SearchResults,page=>Url.Action(“搜索”), 新建{Page=Page, 所有者=Model.OwnerName, AccountNumber=Model.STRAP, 地址=型号。地址, 位置=模型位置, ZipCode=Model.ZipCode, Pool=Model.Pool, 网球, Dock=Model.Dock, 海堤=Model.seavall, SalesFrom=Model.SalesFrom, SalesTo=Model.SalesTo, SaleAmountFrom=Model.SaleAmountFrom, SaleAmountTo=Model.SaleAmountTo, VacantLand=Model.VacantLand } )) }
您正在razoe视图中使用
LINQ
表达式。您需要将适当的名称空间导入到视图中才能使用LINQ函数


使用
System.Linq添加语句到视图。

错误在视图(cshtml文件)中,而不是在视图模型、模型或控制器中。=)@MichaelPerrenoud你是说Search.cshtml的代码对吗?因为我没有编写HiddenInput.cshtml,它是Microsoft MVC框架的一部分。这是我昨天尝试的第一件事。我将其添加到Search.cshtml和微软的HiddenInput.cshtml中。我刚才又试了一次。同样的错误。现在加载只需要40秒。只要我从ViewModel中删除属性[HiddenInput],站点就会正常运行。所以,除非微软的HiddenInput.cshtml需要linq。我真的不明白为什么我需要添加对linqwhat is hiddeninput.cshtml的引用?你从哪里得到的?它是MVC框架编辑器模板的一部分。可以通过创建具有该名称的模板来覆盖它,但它实际上位于程序集内部。另外,我没有覆盖它。请参阅更新。你是对的。Nuget软件包安装了一个“fancier”HiddenInput.cshtml。我删除了它,所以现在不需要引用linq。
public class BasicSearchViewModel 
{
    public BasicSearchViewModel()
    {
        SalesFrom = new DateTime(1974, 1, 1);
        SalesTo = DateTime.Today;
    }

    [Display(Name = "Owner", ShortName = "Owner", Prompt = "Enter Owner"), DataType(DataType.Text)] 
    public string OwnerName { get; set; }
    [Display(Name = "Account Number", ShortName = "Strap", Prompt = "Enter Account Number"), DataType(DataType.Text)] 
    public string STRAP { get; set; }

    [Display(Name = "Address", ShortName = "Addr.", Prompt = "Enter full address"), DataType(DataType.Text)] 
    public string Address { get; set; }
    //public bool HasPool { get; set; }


    public string Location { get; set; }

    public string ZipCode { get; set; }


    public bool Pool { get; set; }

    public bool Tennis { get; set; }

    public bool Dock { get; set; }

    public bool SeaWall { get; set; }


    [Display(Name = "Sales From")]
    [Range(typeof(DateTime),"1/1/1974","12/31/2050")]        
    public DateTime SalesFrom { get; set; }

    [Display(Name="Sales To")]
    [Range(typeof(DateTime), "1/1/1974", "12/31/2050")]
    public DateTime SalesTo { get; set; }


    public int? SaleAmountFrom { get; set; }
    public int? SaleAmountTo { get; set; }


    public bool VacantLand { get; set; }

    [ScaffoldColumn(false)]
    public PagedList<ParcelResultItemViewModel> SearchResults { get; set; }

    [HiddenInput]
    public int? page { get; set; }

}
@using Search.Helpers;
@using Search.Components.Html.ViewModels;
@using PagedList.Mvc;


@model BasicSearchViewModel

@{
    ViewBag.Title = "Search";

}

@Html.ActionLink("Advanced", "AdvancedSearch")
@Html.ActionLink("Tangible", "Search", "Tangible")

@using (Html.BeginForm("Search", "Parcel",  FormMethod.Get, new { id = "searchForm" }))
{

<div>@Html.ValidationMessageFor(x => x)</div>

    @Html.EditorFor(m => m)
     <input type="submit" value="Refine" />




        <h2>Results</h2>
<strong>Showing the first @Model.SearchResults.TotalItemCount of  @ViewData["count"] results found </strong>

<table>
<tr>
<th>STRAP</th>
<th>SITUS</th>
<th>PROPERTY USE</th>
<th></th>
</tr>
@foreach (var item in Model.SearchResults)
{
    <tr>
        <td>
            @Html.DisplayFor(x => item.STRAP) 
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.SITUS)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.SUBDIVISION_PROPERTY_USE)
        </td>
        <td rowspan="2">
            @Html.ActionLink("Show Details", "Details", new { id = item.STRAP })
        </td>
    </tr>
    <tr>
    <td colspan="3">
    @foreach (var owner in item.OWNERS.Take(2).OrderBy(x => x.LN_NUM))
    {
       @owner.NAME<br /> 
    }
    </td>
    </tr>
}

</table>

<pre>
@HttpUtility.ParseQueryString(Model.AsQueryString())
</pre>   

@Html.PagedListPager(Model.SearchResults, page => Url.Action("search", 
    new {Page = page,   
        owner = Model.OwnerName,
        AccountNumber = Model.STRAP,
        Address = Model.Address,
        Location = Model.Location,
        ZipCode = Model.ZipCode,
        Pool = Model.Pool,
        Tennis = Model.Tennis,
        Dock = Model.Dock,
        SeaWall = Model.SeaWall,
        SalesFrom = Model.SalesFrom,
        SalesTo = Model.SalesTo,
        SaleAmountFrom = Model.SaleAmountFrom,
        SaleAmountTo = Model.SaleAmountTo,
        VacantLand = Model.VacantLand          
         }

    ))

}