1

アップデート

だから、私はずっと間違ったファイルを見ていました。私のプロジェクトには 2 つの HiddenInput.cshtml ファイルがあり、1 つは displayTemplate フォルダーに、もう 1 つは EditorTemplates にありました。私の脳は、2 つの異なるフォルダーを見ていましたが、接続を確立していませんでした。


したがって、これは ViewModel のプロパティに hiddenInput 属性を追加するときに受け取る奇妙なエラーのように思えます...

私の推測では、ViewModels、Controllers、および Models が 3 つの別々のプロジェクトにあるためです。ただし、この問題をデバッグしようとしたときに、3 つすべてで System.Data.Linq が参照されていることを確認しました。

c:\proj\Adirondack.search\Views\Shared\EditorTemplates\HiddenInput.cshtml(9): エラー CS0234: 型または名前空間名 'Linq' が名前空間 'System.Data' に存在しません (アセンブリがありませんか?参照?)

ビューモデル

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; }

}

Search.cshtml

@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          
         }

    ))

}
4

1 に答える 1

0

LINQrazoe ビューで式を使用しています。LINQ 関数を使用するには、適切な名前空間をビューにインポートする必要があります。

ビューに using ステートメントを追加しSystem.Linq;ます。

于 2013-04-17T12:31:18.553 に答える