2011-02-10 6 views
0

ViewModelを作成して、SelectListItemを追加してドロップダウンリストをバインドできるようにしようとしています。 私はこのドロップダウンリストをバインドしようとするとLINQ to Entitiesエラーが発生する

public class CreatePurchaseViewModel 
{ 
    public Product Product { get; set; } 
    public IEnumerable<SelectListItem> Products { get; set; } 
    public int SelectedProductId { get; set; } 
    public DateTime OrderDate { get; set; } 
    public bool OrderSent { get; set; } 

} 

のように見える非常に基本的なのviewmodelを持って、それは価値= x.Productは、文字列にint型に変換カントと文句を言いしかし私のコントローラは、この

[HttpGet] 
    public ActionResult Create() 
    { 
     var model = new CreatePurchaseViewModel 
         { 
          Products = context.Products.Select(x => 
                 new SelectListItem() 
                  { 
                   Text = x.ProductName, 
                   Value = x.ProductID 
                  }) 
         }; 
     return View(model); 
    } 

のように見えます。だから私は.ToStringを追加する場合には、[OK]をコンパイルしますが、私はビューをロードしようとしたとき、私はエンティティへのエラー

LINQは方法「可能System.StringのToString()」メソッドを認識しない、そしてこの方法は、することはできません取得しますストア式に変換されます。

マイビューのエンティティフレームワークとMVCの両方にかなり新しい

@using (Html.BeginForm()) { 
@Html.ValidationSummary(true) 
<fieldset> 
    <legend>CreatePurchaseViewModel</legend> 

    <div class="editor-label"> 
     @Html.LabelFor(model => model.SelectedProductId) 
    </div> 
    <div class="editor-field"> 
     @Html.DropDownListFor(x => x.SelectedProductId,Model.Products) 
     @Html.ValidationMessageFor(model => model.SelectedProductId) 
    </div> 
    <div class="editor-label"> 
     @Html.LabelFor(model => model.OrderDate) 
    </div> 
    <div class="editor-field"> 
     @Html.TextBoxFor(model=>model.OrderDate) 
     @Html.ValidationMessageFor(model => model.OrderDate) 
    </div> 
    <div> 
    Sent 
    @Html.RadioButtonFor(model => model.OrderSent, "Sent", new { @checked = true }) 
    Not Sent 
    @Html.RadioButtonFor(model=>model.OrderSent,"Not Sent") 

イムので、任意のヘルプは素晴らしいことです。

は、あなたはどのようにあなたの製品モデルがどのように見えるん指定されていないが、我々はあなたが文字列に変換する必要がある場合がありますので、ProductIDプロパティが整数であると仮定することができ、あなたに

答えて

0

ありがとう:

[HttpGet] 
public ActionResult Create() 
{ 
    var model = new CreatePurchaseViewModel 
    { 
     Products = context.Products.Select(x => 
      new SelectListItem 
      { 
       Text = x.ProductName, 
       Value = x.ProductID.ToString() 
      } 
     ) 
    }; 
    return View(model); 
} 
+0

こんにちはDarin しかし、私はまだそれを試しました >エンティティにLINQは、 'System.String ToString()'メソッドを認識しないし、このメソッドはストア式に変換することはできません。 –

+0

@Diver Dan、このエラーが発生するのは間違いありませんか?ビューをレンダリングするとき、またはフォームをポストするとき? –

+0

コントローラにブレークポイントを設定し、モデルのために返されたものを見ています。その製品がエラーを返すことがわかります。 コントローラにValue = "1"をハードコードすると、okに実行されます。 –

関連する問題