0
ViewModel을 만들고 드롭 다운 목록을 바인딩 할 수 있도록 SelectListItem을 추가하려고합니다. 가 나는 값 = x.Product 문자열에 int 형으로 변환 캔트 불평 그러나이드롭 다운 목록을 바인딩 할 때 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; }
}
내 컨트롤러가이
[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을 추가해도 괜찮습니다. 그러나 뷰를로드하면 오류가 발생합니다.
LINQ to Entities는 'System.String ToString()'메서드를 인식하지 못합니다.이 메서드는 사용할 수 없습니다. 상점 식으로 변환됩니다.
내보기
@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")
임 꽤 모두 엔티티 프레임 워크에 대한 새로운 MVC 그래서 어떤 도움도 좋은 것입니다.
당신은 당신의 제품 모델이 생겼 방법을 지정하지 않은 당신에게
안녕 Darin 그러나 나는 여전히 오류가 발생했습니다. > LINQ to Entities는 'System.String ToString()'메서드를 인식하지 못하고이 메서드를 저장소 식으로 변환 할 수 없습니다. –
@Diver Dan, 정확히이 오류가 발생합니까? 보기를 렌더링 할 때 또는 양식을 게시 할 때? –
컨트롤러에 중단 점을 두었고 모델에 대해 반환 된 것을 살펴 봅니다. 제품에서 오류를 반환하는 것을 볼 수 있습니다. 컨트롤러에 Value = "1"을 하드 코딩하면 ok로 실행됩니다. –