0

내가 달성하려는 경우에도 가능 해요,하지만 작업에 따라 PartialView 반환합니다 일반 응용 프로그램을 만들려고 해요 사용자가 제출 한 아쉽게도 다음 코드는 실행할 때 다음 오류가 발생합니다.ASP.NET MVC3 다른 함수에서 PartialView 반환 C#

사전에 전달 된 모델 항목의 형식은 'System.String'이지만이 사전에는 'Core.Entities'유형의 모델 항목이 필요합니다. CGrid '내보기에

, 나는 어떤 앵커 태그에 후크 다음 jQuery를 사용하고이 작동하고 FunctionCall.cshtml 자리 페이지를 반환 테스트되었습니다

$("a").live('click', function (e) { 
      if ($(this).attr("href").indexOf("#func_") > -1) {   { 
       var func = '/Core/FunctionCall?function=' + $(this).attr("href").replace("#func_", ""); 
       $.ajax({ 
        url: func, 
        type: 'GET', 
        async: false, 
        success: function (result) { 
         $("#customerTabBody").empty(); 
         $("#customerTabBody").html(result); 
        } 
       }); 
      } 
     }); 

. 내가 "의 GridView"와 "FormView"함수를 호출하는 경우

public class CoreController : Controller 
{ 
    [HttpGet] 
    public ActionResult FunctionCall(string function) 
    { 
     Core.Entities.CFunction func = null; 

     try 
     { 
      using (CFunction f = new CFunction()) 
       func = f.GetFunction(Convert.ToInt32(function)); 

      if (func.ModuleName == "GRID") 
       return PartialView("GridView", func.Parameters[1].ToString()); 
      else 
       return PartialView("FormView", func.Parameters[1].ToString()); 
     } 
     catch (Exception) 
     { 
      return null; 
     } 
    } 

    [HttpGet] 
    public ActionResult GridView(string gridView) 
    { 
     Core.Entities.CGrid grid = null; 

     using (CGrid data = new CGrid()) 
      grid = data.GetGridNew(gridView); 

     return PartialView(grid); 
    } 

    [HttpGet] 
    public ActionResult FormView(string formView) 
    { 
     Core.Entities.CForm form = null; 

     using (CForm data = new CForm()) 
      form = data.GetForm(formView); 

     return PartialView(form); 
    } 
} 

직접 그 부분보기가 오류없이 올바르게 표시됩니다 : 다음과 유사 할 FunctionCall 기능을 수정하기 때문에, 내가 가진 (이 진행 중입니다) , 그러나 jQuery (또는 앵커 링크를 구축하는 함수)에 필요할 수있는 모든 가능한 유형의 뷰를 제공하기보다는 요청을 처리하고 값이 무엇이든 관계없이 뷰를 반환하는 단일 함수를 원했습니다. 통과했다. 문제는 다른 함수 내에서 이러한 PartialView를 반환하는 것 같습니다.

도움을 주시면 대단히 감사하겠습니다.

증언 : Thanks @ YD1m (그리고 그 외 모든 사람이 대답했습니다). 필자는 코드가 "GridView"또는 "FormView"함수로 곧바로 이동한다고 가정 했었습니다. 나는 더 많은 커피가 필요하다 생각 :

다음

지금 작동하는 수정 된 코드입니다 : 당신은 잘못된 유형의 모델을 볼 통과

[HttpGet] 
    public ActionResult FunctionCall(string function) 
    { 

     Core.Entities.CFunction func = null; 

     try 
     { 
      using (CFunction f = new CFunction()) 
       func = f.GetFunction(Convert.ToInt32(function)); 

      if (func.ModuleName == "CORE") 
      { 
       Core.Entities.CGrid grid = null; 

       using (CGrid data = new CGrid()) 
        grid = data.GetGridNew(func.Parameters[1].ToString()); 

       return PartialView("GridView", grid); 
      } 
      else 
      { 
       Core.Entities.CForm form = null; 

       using (CForm data = new CForm()) 
        form = data.GetForm(func.Parameters[1].ToString()); 

       return PartialView("FormView", form); 
      } 
     } 
     catch (Exception) 
     { 
      return null; 
     } 
    } 
+0

메시지가 분명합니다.보기에 문자열을 보냈지 만 'Core.Entities.CGrid' 객체가 필요합니다. –

+0

감사합니다. Andre, 추후에 문제가 무엇인지 분명히했습니다. 그것은 내가 두려워하는 문제를 지나치게 생각한 사례였습니다. – user2524354

답변

1

. 보기 파일 @model 성명에서 모델의 종류를 확인하고이 코드에서 적절한 모델을 보낼 수 있는지 확인하십시오

if (func.ModuleName == "GRID") 
       return PartialView("GridView", func.Parameters[1].ToString()); 
      else 
       return PartialView("FormView", func.Parameters[1].ToString()); 
+0

완벽한, "GridView"또는 "FormView"함수로 건너 뛰고 뷰를 직접 호출하지 않을 것이라고 생각했습니다. 도! :) 많은 감사합니다. 내 질문을 작동하는 코드로 업데이트 할 것이다. – user2524354

1
return PartialView("GridView", func.Parameters[1].ToString()); 

실제로의 GridView actionmethod를 호출하지 않습니다이 줄은, 단순히라는 부분 뷰를 돌려줍니다 " GridView "를 호출하고 두 번째 매개 변수를 모델로 전달합니다. YD1m이 지적했듯이 뷰가 모델로서의 문자열을 허용하도록 설정되어 있지 않기 때문에 오류가 발생합니다.

+0

감사합니다. 저는 YD1m에 처음 대답했을 때 대답을 수여했습니다. 그러나이 대답은이 문제를 명확히하는 데 도움이됩니다. – user2524354

+0

문제 없으므로 기쁘게 생각합니다 :) –