2013-11-15 2 views
0

여기에도 비슷한 질문을 많이 했었지만 해결할 수 없었습니다 우리의 문제 또는 왜 이것이 일어날 지 설명하십시오.사전에 전달 된 모델 항목은 'System.Guid'유형이지만이 사전에는 'System.String'유형의 모델 항목이 필요합니다.

기존 데이터베이스에서 EDMX를 만들고 MVC 4 스캐 폴딩을 사용하여 컨트롤러와 뷰를 자동으로 생성했습니다. 인덱스 페이지는 괜찮지 만 편집 할 엔터티를 선택하면이 오류가 발생합니다. 우리 솔루션에는 사용자 정의 편집기가 없으며 부분 페이지 업데이트도 아닙니다.

public ActionResult Edit(int id = 0) 
{ 
    MessageProfile messageprofile = db.MessageProfiles.Find(id); 
    if (messageprofile == null) 
    {  
     return HttpNotFound(); 
    } 
    return View(messageprofile); 
} 

Edit.cshtml의 모델을 선언

@model Web.UI.Areas.Admin.Models.MessageProfile 

이며, 오류가

@Html.EditorFor(model => model.APIKey) 

상기 발생합니다 :

편집 페이지의 컨트롤러 코드는 이것이다 EDMX에는 GUID로 APIKey가 있고, 생성 된 모델 클래스에는 모델로 APIKey가 있으며, EditorFor는 코드에서 코드 위에 마우스를 가져 가면 GUID 용 편집기가 나타납니다. 우리는 String이 프로세스에 들어가는 곳이 완전히 엉망입니다. 어떤 도움을 주시면 감사하겠습니다.

+0

시도하고 EditorFor (모델, "GUIEditor'에서 호출 ")' –

+0

'MessageProfile' 정의 방법을 보여줄 수 있습니까? –

답변

0

ASP.NET Dynamic Data를 사용하면 MVC 스캐 폴딩의 모든 기본 유형에 대한 편집기가 이미 존재할 것으로 예상됩니다. 존재하지 않으며 암시 적 변환을 시도합니다. 실패하면 보통이 오류가 발생합니다.

이 경우, 쉬운 해결책은 Html.EditorFor 대신 Html.TextBoxFor를 사용하는 것이 었습니다. 이상한 경우이지만 이메일에서 값을 붙여 넣습니다. 다른 경우에는 조회 및 드롭 다운 목록을 사용하여 양식을 개선했습니다.

GUID 전용 편집기가 필요하다면 우리 자신 만의 편집기를 만들어야 할 것입니다. 결국 우리는 결국 텍스트 상자 였기 때문에 첫 번째 솔루션이 가장 간단한 이유가되었습니다.

0

이것은 나에게도 일어난 일입니다. 내게는 사용자 정의 Editfor 템플릿을 만들었고 System.Guid에 하나도 포함시키지 않은 것이 문제였습니다. 시스템과 일치하는 것을 찾을 수 있기 때문에. 시스템을 사용하려고 시도 할 것입니다. 따라서 문자열이 오류를 생성합니다.

이 당신의 EditorTemplates의 경우는 가이 드라는 cshtml을 추가 할 폴더의 경우, 다음과 같은 추가 :`GUIEditor.cshtml` 당신의 자신을 만드는

@model System.Guid 
@Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue)